2.3 缓冲区流方式读写文件
在使用字符流的write()或者read()方法时,都会导致从底层输入输出流读取或者写入一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层输入输出流中读取更多的字节,使其超过满足当前读取操作所需的字节。为了达到最高效率,可以使用缓冲流方式读写文件。缓冲流方式的类是BufferedReader类和BufferedWriter类。如图所示。
2.3.1文件数据的写入
通过BufferedWriter类实现文件的写入,该类的基类是Writer类。
2.3.1.1 创建文件流
BufferedWriter缓冲区流是由OutputStreamWriter类获得的,而OutputStreamWriter类又是由FileOutputStream类获得的。
FileOutputStream fos = new FileOutputStream(filePath);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
2.3.1.2 写入文件流
通过BufferedWriter类的write()方法将数据写入到文件流中。
bw.write(content);
其中,content是String类的对象,表示要写入到文件中的数据。
2.3.1.3 关闭文件流
此时需要关闭的文件流为缓冲区文件流、字节文件流和字符文件流。
bw.close();
osw.close();
fos.close();
2.3.2 文件数据的读取
通过BufferedReader类实现文件的写入,该类的基类是Reader类。
2.3.2.1 创建缓冲区流
BufferedReader类的使用方法与BufferedWriter类的使用方法类似。
FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
2.3.2.2 读取缓冲区流
通过BufferedReader类的read()方法读取缓冲区流。
br.read(content);
其中,content是char[]类型,用来保存从文件中读取的数据。
2.3.2.3 关闭缓冲区流
br.close();
isr.close();
fis.close();
3 小结
今天学习了使用流实现写入读取文件的三种方法,这三种流分别是字节流、字符流和缓冲区流。其中,字节流中操作的数据单元是字节,主要通过FileInputStream和FileOutputStream类实现;字符流中操作的数据单元是字符,主要通过InputStreamReader和OutputStreamWriter类实现;缓冲区流属于字符流,通过将字符读取或写入到缓冲区的方式提高了读写效率,通过BufferedReader类和BufferedWriter类实现。