通过流实现文件读写的方法(下)

时间:2021-04-26 22:38:11

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);

其中,contentString类的对象,表示要写入到文件中的数据。

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);

其中,contentchar[]类型,用来保存从文件中读取的数据。

2.3.2.3 关闭缓冲区流

br.close();

isr.close();

fis.close();

3 小结

今天学习了使用流实现写入读取文件的三种方法,这三种流分别是字节流、字符流和缓冲区流。其中,字节流中操作的数据单元是字节,主要通过FileInputStreamFileOutputStream类实现;字符流中操作的数据单元是字符,主要通过InputStreamReaderOutputStreamWriter类实现;缓冲区流属于字符流,通过将字符读取或写入到缓冲区的方式提高了读写效率,通过BufferedReader类和BufferedWriter类实现。