缓冲流:(提高读取、写入的效率)
- BufferedReader、BufferedWriter:用于处理字符
- 缓冲流是作用在节点流上的,所以节点流的对象作为参数传递到缓冲流
BufferedReader中的方法:
- read():一个字一个字的读
- read(char[] ch) 以数组的为容器,一次性读取一个数组的长度
- readLine() 一行一行的读,调用一次读一行调用一次读一行
注意:上面的三个方法的读取时迭代进行的,会相互影响,所以不建议混合使用,容易出错
BufferedWriter中的方法:
- write(String str) : 写入字符串
- write(char[] ch) : 写入char数组
- write(char[] ch,int index,int len) : 存入的数据是从ch数组中的[0,len)
使用输入流:
①在try-catch-finally外面创建一个相应的流变量赋值null,因为关闭流的操作要在finally中,进行,如果将这个变量写在try-catch中,那么finally中将超出该变量的作用域
②实例化File类的对象
③流的实例化(通过1中的变量接收),缓冲流是作用在节点流上的,所以节点流的对象作为参数传递到缓冲流
④数据对的读入
⑤通过close()关闭流.注意:要判断2中的实例化是否成功,此时还会抛出异常,所以还要用一个try-catch来处理异常
先关闭外层的流(缓冲流),在关闭内层的流(节点流)
使用输出流:
①在try-catch-finally外面创建一个相应的流变量赋值null,因为关闭流的操作要在finally中,进行,如果将这个变量写在try-catch中,那么finally中将超出该变量的作用域
②实例化File类的对象
③流的实例化 。 new 类名(通过1中的变量,false),true表示追加;默认为false表示覆盖。缓冲流是作用在节点流上的,所以节点流的对象作为参数传递到缓冲流
④数据对的写出,可以传递字符串、数组、基本数据类型
⑤通过close()关闭流。注意:要判断2中的实例化是否成功,此时还会抛出异常,所以还要用一个try-catch来处理异常
先关闭外层的流(缓冲流),在关闭内层的流(节点流)
字节数组char[]: ch
代码(实现文本文件的读取、存储):
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedReader_BufferedWriterTest {
public static void main(String[] args) {
BufferedReader_BufferedWriterTest brw = new BufferedReader_BufferedWriterTest();
brw.test();
System.out.println("ok");
}
public void test() {
BufferedReader br = null;
BufferedWriter bw = null;
try {
File file = new File("src\\I_O流\\hello.txt");
File file2 = new File("src\\I_O流\\hello4.txt");
//缓冲流是作用在节点流上的,所以节点流的对象作为参数传递到缓冲流
br = new BufferedReader(new FileReader(file));
bw = new BufferedWriter(new FileWriter(file2));
char[] ch = new char[5];
int len;
while((len=br.read(ch))!=-1) { //数据的读取,并保存到ch数组
bw.write(ch, 0, len); //数据的写入,存入的数据是从ch数组中的[0,len)
}
//readLine() 一行一行的读,调用一次读一行调用一次读一行
// String OneLineData;
// while((OneLineData=br.readLine())!=null) {
// bw.write(OneLineData);
// OneLineData=br.readLine();
// }
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(br != null)
br.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (bw != null)
bw.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}