前面学习了字节流,现在来学习一下字符流,字符流,看名字就知道是什么意思了,是用来读写字符的流。
先来看一下:FileReader 和 FileWriter
直接上代码
FileReader :
FileWriter:
FileReader 和 FileWriter主要是对文本文件进行操作,字符流操作文件好处是:可以自动的转码,读取中文的时候不会乱码。
PS:FileWriter写换行符应该是、\r\n
下面来看一下BufferedReader 和 BufferedWriter
先看一下BufferedReader 的基本用法
再来看一下 BufferedWriter 的基本用法
其实 FileReader 和 FileWriter、 BufferedWriter 和 BufferedReader 相比,也即是多了个自身维护的缓冲数组,没什么多大的区别
BufferedReader 有一个方法,是很常用的,那就是readLine(); 顾名思义,一次读取一行。
BufferedWriter 也有一个对应的方法,但不是writeLine(); 不要说出去有这个方法,会丢人的,与之相对应的就是 newLine(); 新建一行空行。
记住,reader和writer都是操作文本文件的,不能对二进制的文件进行操作,否则会出错,下面演示一个错误的案例,错误的案例,错误的案例:
上面的是代码,下面的是结果,结果目标文件路径中确实有相对应的image2文件,外面看,大小还是一样的,但你点详细信息的时候你会发现,复制过来的这个文件的大小会比原来的要小一点,然后你可以试图的去打开复制后的这个image2 你会发现,根本打不开,这就对了,这就是用字符流去操作二进制文件的后果,所以一定要记住,字符流只能操作文本文件,字符流出现的原因无非就是使我们操作文本文件的时候更加便捷,少了转码的那一步骤。
对IO方面还有什么不明白的请移步到Java_IO
最后附上IO篇的目录
FileInputStream和FileOutputStream的简单使用
Java_IO_BufferedIntputStream_And_BufferedOutputStream
Java_IO_ObjectInputStream_And_ObjectOutputStream
Java_IO_SequenceInputStream文件的合并