一、目录
- 节点流和处理流基本介绍
- 节点流和处理流的区别和联系
- BufferedReader和BufferedWriter
- BufferedInputStream和BufferedOutputStream
- 节点流:可以从一个特定的数据源读写数据,如FileReader、FileWriter。
- 处理流:也叫包装流,是"连接"在已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,如BufferedReader、BufferedWriter、ObjectOutputStream、ObjectInputStream。
- 节点流是底层流/低级流,直接和数据源相接。
- 处理流包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。
- 处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相接。
处理流的功能主要体现在:
- 性能的提高:主要以增加缓冲的方式来提高输入输出的效率。
- 操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便。
BufferedReader和BufferedWriter属于字符流,是按照字符来读取数据的。 关闭时,只需要关闭外层流即可。
代码示例:
package com.javaBufferedReader;
import java.io.BufferedReader;
import java.io.FileReader;
public class JavaBufferedReader {
public static void main(String[] args) throws Exception{
String FilePath = "E:\\code\\java\\code\\dd.txt";
BufferedReader bufferedReader = new BufferedReader(new FileReader(FilePath));
String line;
//按行读取
//当返回空时,表示文件读取完毕
while ((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
//关闭流 只需要关闭外层流即可,因为底层会自动关闭节点流,这里的节点流就是FileReader。
bufferedReader.close();
}
}
package com.javaBufferedWriter;
import java.io.BufferedWriter;
import java.io.FileWriter;
public class JavaBufferedWriter {
public static void main(String[] args) throws Exception{
String FilePath = "E:\\code\\java\\code\\ddd.txt";
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(FilePath, true));//true代表是以追加的方式写入文件
bufferedWriter.newLine(); //插入一个换行,newLine()会自动插入一个符合当前操作系统的换行符。
bufferedWriter.write("hello,do you love me?");
bufferedWriter.newLine();
bufferedWriter.write("hi, i love you");
bufferedWriter.close();
}
}
五、BufferedInputStream和BufferedOutputStream
BufferedInputStream和BufferedOutputStream是字节流,在创建BufferedInputStream时,会创建一个内部缓冲区数组。 BufferedOutputStream实现缓冲的输出流,可以将多个字节写入底层输出流中,而不必对每次字节写入调用底层系统。