java IO 字符流(一)FileReader与FileWriter
2018-01-08 16:26
731 查看
java字符流主要用于文本数据的操作,根据流向又可以分为输入流与输出流,从java IO的类总结图中可以看到java字符流的两个大的抽象类为:Reader与Writer,其他都是他们俩的子类,基本都是成对出现的,一个负责输入,一个负责输出。
本篇主要总结一下FileReader与FileWriter。
一、FileReader
流向为操作对象到内存,所以为输入流。构造方法有三个,常用的有两个,继承自InputStreamReader。
![](https://img-blog.csdn.net/20180108162759939?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxMDk4OTgw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
源码中FileReader只有三个构造方法,所以调用FileReader的方法其实都是继承自InputStreamReader。经常用来读取文本中的内容,基本单位为char。
![](https://img-blog.csdn.net/20180108163459756?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxMDk4OTgw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
按照字符数组去读取,如果读完了整个文本,则返回-1,所以用-1来判断是否到达尾端。
2.FileWriter
与Writer相反,流向为内存到对象,输出流。继承自OutPutStreamReader,构造方法有五个常用的有四个,比这FileReader多了一个Boolean的参数,来确定是否在原来的文档追加,还是把原来的内容清掉再写入。
![](https://img-blog.csdn.net/20180108164004324?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxMDk4OTgw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
上图是去掉注释的源码。
![](https://img-blog.csdn.net/20180108164627604?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2VpeGluXzQxMDk4OTgw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
需要注意的是构造方法中的是否追加参数,还有就是writer的write并没有将数据直接写进文件而是保存在缓冲区,flush方法才是将缓冲去的数据写入到文本。
3.总结
操作的最后都要将流关闭,并且关闭流的操作要写在finally中,因为如果将数据转换为流,存储在内存中,然后进行处理,如果使用过后没有关闭,那么java就会认为一直在使用,而不进行垃圾回收,那么就会一直占用内存,如果文件过大或者过多,就会浪费资源,并且可能直接导致内存溢出。
本篇主要总结一下FileReader与FileWriter。
一、FileReader
流向为操作对象到内存,所以为输入流。构造方法有三个,常用的有两个,继承自InputStreamReader。
源码中FileReader只有三个构造方法,所以调用FileReader的方法其实都是继承自InputStreamReader。经常用来读取文本中的内容,基本单位为char。
按照字符数组去读取,如果读完了整个文本,则返回-1,所以用-1来判断是否到达尾端。
2.FileWriter
与Writer相反,流向为内存到对象,输出流。继承自OutPutStreamReader,构造方法有五个常用的有四个,比这FileReader多了一个Boolean的参数,来确定是否在原来的文档追加,还是把原来的内容清掉再写入。
上图是去掉注释的源码。
需要注意的是构造方法中的是否追加参数,还有就是writer的write并没有将数据直接写进文件而是保存在缓冲区,flush方法才是将缓冲去的数据写入到文本。
3.总结
操作的最后都要将流关闭,并且关闭流的操作要写在finally中,因为如果将数据转换为流,存储在内存中,然后进行处理,如果使用过后没有关闭,那么java就会认为一直在使用,而不进行垃圾回收,那么就会一直占用内存,如果文件过大或者过多,就会浪费资源,并且可能直接导致内存溢出。
相关文章推荐
- Java IO 之 FileReader FileWriter 实现字符文件的复制(处理FileWriter新建文件失败的问题)
- 【Java.IO】I/O 字节 <-> 字符转换流 —— InputStreamReader,OutputStreamWriter(FileReader,FileWriter)
- 字符输入输出流:java.io.FileReader和java.io.FileWriter
- Java中IO字符流FileReader,FileWriter,缓冲流BufferedReader,BufferedWriter流,随机流
- 151_IO_字符流_纯文本_节点流_Reader_FileReader_Writer_FileWriter_读取_写出_拷贝
- Java IO(十四):FileReader 和 FileWriter
- Java IO FileReader和FileWriter
- [Java] FileReader/FileWriter 字符流
- Java文件字节输入流(FileInputSream)文件字节输出流(OutputStream),字符输入输出流(FileReader/FileWriter)
- 7.Java基础:常见IO流----->字符流:FileReader、FileWriter
- java IO之FileReader和FileWriter
- java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr
- Java学习笔记之IO(七):FileReader输入字符流
- Java 字符流实现文件读写操作(FileReader-FileWriter)
- java-IO操作——使用FileWriter和FileReader来操作文件
- IO之输入字符流FileReader、输出字符FileWriter
- java io系列22之 FileReader和FileWriter
- Java IO中的FileReader 和 FileWriter读写文件,和创建多级文件夹
- Java day10 IO文件复制 FileReader,FileWriter
- JAVA基础IO-fileReader字符流