浅谈java字节流和字符流对文件的操作

时间:2022-08-18 21:01:45

字节流和字符流区别在于,字符流是专门用来处理字符串的,而字节流可以用来处理任何数据。

存储设备上的任何数据需要被处理就必须得通过字节流或字符流的方式进入内存中,字符流或在其流入过程中先进行编码的解析,字节流不用。

1.在字符流中,有专门用来处理文件的类,FileWriter,FileReader,通过实例化他们,就能进行文本文件的写入和读取操作。FileWriter fw = new FileWriter(file);其父类inputFileWriter,outputFileWriter是“字符流通向字节流的桥梁”。

2.顾名思义,Writer是用来向内存中写数据,Reader是读取内存数据。

3.通过调用fw.writer();的重载函数就能向其中写入数据,但是写入的数据暂时还只是放在缓冲区中。

4.记住,写玩后一定要调用fw.flush()方法进行刷新操作。

5.然后调用fw.close()方法来关闭流。

一个比较恰当的比方,比如常用的记事本,先用文件名创建一个文本文件(类比1),再双击打开(获取操作流的方法),然后敲键盘写入(类比3),但是此时文本中还是没有内容的,点击文件,点击保存(类比4),数据写入完成,关闭记事本窗口(类比5)。


读取文件操作也是差不多的

1.创建实例FileReader fr = new FileReader(file);

2.fr.read()连续调用该方法将一个一个的读取单个字符,返回编码表对应的值(如a->97)fr.read(new char[n])该方法将一次读取指定传入数组长度的字符并放在字符数组中,返回读取的字符个数,在文件读取完毕后他们都将返回-1,值得注意的是如果前面如果调用了其中一个方法,后面再调用另一个方法那么后调用的那个方法也会接着前面的继续读取而不是说重头读。

3.还是要调用close方法关闭资源。


字节流的操作也是大同小异,不同的是字节流的写入不必调用flush方法,将直接写入文件