- class MyBufferedReader
- {
- private FileReader fr = null;
- MyBufferedReader(FileReader fr)
- {
- this.fr = fr;
- }
- public String myReaderLine()
- {
- StringBuilder sb = new StringBuilder();
- int ch = 0;
- while((ch=fr.read())!=-1)
- {
- if(ch=='\r')
- continue;
- if(ch=='\n')
- return sb.toString();
- else
- sb.append((char)ch);
- }
- }
- public void close()
- {
- fr.close();
- }
- }
复制代码 给你看看BufferedReader的readLine()的方法是怎么实现的,你就懂了
内部还是用的是普通的read()
正如楼上所说
readLine()的内部实现是read(),read()每一个字符都读到,并存入一个字符串缓冲容器StringBuilder中,包括换行符\r\n,但是呢,在readLine()的内部,会判断读到的字符是否是\r或\n(两者必须连着出现)
如果是,就舍弃并返回读到的StringBuilder
FileReader的read()方法本身不会区分换行符\r\n,所以,读到了换行符\r\n,也就解析成换行
|