Java: IO 字节流
FileReader是InputStreamReader的子类,InputStreamReader是Reader的子类。Reader系列是输入字符流。
1.一个字符一个字符的读取
import java.io.*;
public class FileReaderDemo {
public static void main(String[] args) {
FileReader fr = null;
try{
fr = new FileReader("FileWriterDemo.txt");
int ch =0;
while((ch = fr.read())!=-1){
System.out.print((char)ch);
}
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
2.使用字符数组临时存储读取的字符,数组长度可以自定义
import java.io.FileReader;
import java.io.IOException; public class FileReaderDemo2 { public static void main(String[] args) {
FileReader fr = null;
try{
fr = new FileReader("FileWriterDemo.txt");
//定义字符数组用于存储读到的字符
char[] buf = new char[1024];
int aLength = fr.read(buf);
for(int x = 0;x< aLength;x++)
{
System.out.print(buf[x]);
} }
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
} } }
为了提高读取效率,加入BufferedReader(Reader in)缓冲技术,该类可以使用readLine方法,一次读取一行。
import java.io.*;
public class BufferedReaderDemo {
public static void main(String[] args) {
//创建一个读取流对象
FileReader fr = null;
try{
fr = new FileReader("xinwen.txt");
//加入缓冲技术,提高读取效率
BufferedReader bufr = new BufferedReader(fr);
String line = null;
while((line=bufr.readLine())!=null){
System.out.println(line);
}
bufr.close();
}
catch(IOException e){
e.printStackTrace();
}
finally{
try{
if(fr!=null)
fr.close();
}
catch(IOException e){
e.printStackTrace();
}
}
}
}
FileWriter是OutputStreamWriter的子类,而OutputStreamWriter是Writer的子类。Writer系列是输出字符流。
import java.io.*;
public class FileWriterDemo {
public static void main(String[] args)throws IOException {
FileWriter fw = null;
try {
fw = new FileWriter("FileWriterDemo.txt",true);
fw.write("2015");
fw.write("\r\n");
fw.write("一起努力!");
fw.flush();
}
catch(IOException e){
System.out.println(e.toString());
}
finally{
try{
if(fw!=null)
fw.close();
}
catch(IOException e){
System.out.println(e.toString());
}
}
}
}
为了提阿写入效率,使用BufferedWriter(Writer wr)缓冲技术,该类中的newLine方法可以输出一个换行符,而且是跨平台的。
把输入、输出结合起来,模拟复制文件。方法一,不使用缓冲技术
import java.io.*;
public class FileCopyDemo {
public static void main(String[] args) {
//copy1();
copy2();
}
//读一个字符就存一个
public static void copy1(){
//创建目的文件
FileWriter fw = null;
//与已有文件关联
FileReader fr = null;
try{
fw = new FileWriter("/home/owen/news_copy.txt");
fr = new FileReader("news.txt");
int ch = 0;
while((ch=fr.read())!=-1){
fw.write(ch);
}
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
finally{
try{
if(fw!=null)
fw.close();
if(fr!=null)
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
}
public static void copy2(){
FileWriter fw = null;
FileReader fr = null;
try{
fw = new FileWriter("news_copy2.txt");
fr = new FileReader("news.txt");
char[] buf = new char[1024];
int len = 0;
while((len = fr.read(buf))!=-1){
fw.write(buf,0,len);
}
}
catch(IOException e){
throw new RuntimeException("读写失败");
}
finally{
if(fr!=null){
try{
fr.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
if(fw!=null){
try{
fw.close();
}
catch(IOException e){
System.out.println(e.getStackTrace());
}
}
}
}
}
方法二,使用缓冲技术
import java.io.*;
public class CopyByBuffered {
public static void main(String[] args) {
BufferedReader bufr = null;
BufferedWriter bufw = null;
try{
bufr = new BufferedReader(new FileReader("BufferedReaderDemo.java"));
bufw = new BufferedWriter(new FileWriter("BufferedReaderDemo_copy.txt"));
String line = null;
while((line = bufr.readLine())!=null){
bufw.write(line);
bufw.flush();
bufw.newLine();
}
}
catch(IOException e){
throw new RuntimeException("复制失败!");
}
finally{
try{
if(bufr!=null)
bufr.close();
}
catch(IOException e){
throw new RuntimeException("Read file mission failed!");
}
try{
if(bufw!=null)
bufw.close();
}
catch(IOException e){
throw new RuntimeException("Write file mission failed!");
}
}
}
}
Java: IO 字节流的更多相关文章
- JAVA IO 字节流与字符流
文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节. ...
- Java IO 字节流与字符流 (五)
Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...
- Java IO 字节流与字符流 (三)
概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...
- Java IO 字节流与字符流 (二)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- java IO字节流
字节流可以读取 复制 各种类型 的文件. 写文件 第一种:读文件,每次读取1024字节的内容,读取太大文件不会导致内存溢出 第二种:读文件,更简单 思考?如果复制一个电影 或 1G 以上的文件,会出现 ...
- Java IO教程
1 Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ...
- Java Io(数据输入输出流)
Java Io 字节流中的DataInputStream 和 DataOutputStream,使用流更加方便,是流的一个扩展,更方便读取int, long,字符等类型数据. 事例代码如下: pack ...
- Java IO 学习总结 学习手册总结
Java IO 是一套Java用来读写数据(输入和输出)的API.大部分程序都要处理一些输入,并由输入产生一些输出.Java为此提供了java.io包. 代码 github地址:https://git ...
- java IO流 之 字节流
一.file类的常用操作 File file=new File("E:\\test\\javaIo"); System.out.println(file.isDirectory() ...
随机推荐
- Android 5.1 open data flow 数据开启流程
首先我们来看看下面的关系图: 底层Settings.apk 在Settings -> Data Usage Summary中的某个SIM tab下开启数据开关 android/packages/ ...
- 谷歌大神Jeff Dean:大规模深度学习最新进展 zz
http://www.tuicool.com/articles/MBBbeeQ 在AlphaGo与李世石比赛期间,谷歌天才工程师Jeff Dean在Google Campus汉城校区做了一次关于智能计 ...
- 微信开发那点事(No.001)
MXS&Vincene ─╄OvЁ &0000024─╄OvЁ MXS&Vincene MXS&Vincene ─╄OvЁ:今天很残酷,明天更残酷,后天很美好, ...
- ruby基础语法
首发:个人博客,更新&纠错&回复 学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}. 这种事情毫无技术含量又毫无乐趣可言,但极 ...
- mac上安装Navicat Premium 破解版+汉化包
Navicat是一款非常强大的sql分析管理工具.以前一直在windows上面使用. 由于工作的需要,我也是折腾出了这不易的mac破解版.下了好多网上的版本,亲测这个可用. 俗话说:工欲善其事,必先利 ...
- java语言的认识
class Hello{ public static void main(String [] args) { System.out.println("Hello Word 你好") ...
- Linux phpwind论坛的安装
1:新建文件夹phpwind
- 使用IOS7原生API进行二维码条形码的扫描
使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析 ...
- Intent 匹配规则
1.在AndroidManifest.xml中可以为 每个 Activity,Service 设置多个Intent-Filter; 在系统启动和程序安装之后,android会收集AndroidMani ...
- 逻辑操作符---Lua: and,or,not 对比 C++:&&,||,!
lua中有三个逻辑操作符:and,or,not(逻辑与,逻辑或,逻辑非),同样c++也有类似的三个逻辑操作符:&&,||,!(逻辑与,逻辑或,逻辑非).他们的运算对象就是真和假.lua ...