//input和output是文件路径字符串
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(new FileInputStream(input),"UTF-8"));
BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output),"UTF-8"));
在使用BufferedWriter时遇到问题:
s=bufferedReader.readLine();
bufferedWriter.write(s);
这样写的话文件里并不会换行。
是不是readLine()去除了换行符?还是write去除了换行符?
(当然我们都知道是前者,为了强行分析一波这里假装不知道
我们看看BufferedReader的jdk源码:
首先它有nextChar和nChars两个属性,然后构造时候置为0
然后我们看看readLine()方法
这是fill()中的一段代码
可以看到,它是将nextChar作为读取标记,nChars表示目前读进数组的最后一个位置,一次从缓冲区读一部分,如果发现读进来的这部分读完了,就再去试着读一次,直到遇到EOF。
所