本帖最后由 杨增坤 于 2013-10-1 16:17 编辑
- import java.io.FileReader;
- import java.io.IOException;
- public class MyBufferedReader {
- private FileReader fr = null;
- public MyBufferedReader(FileReader fr) {
- super();
- this.fr = fr;
- }
- /* 模拟readLine的话,其实里面封装了一个数组,我们为了方便,就封装StringBuilder对象,这样操作方便 */
- public String readLine() throws IOException {
- StringBuilder sb = new StringBuilder();
- int ch = -1;
- while ((ch = fr.read()) != -1) {
- //System.out.print(ch+","); 从输入的个数判断出
- if (ch == '\r')//当文件中就存在\r,那此时是否存入StringBuilder中呢,开始我认为是不会存入的,但是结果输出了,难道是读取的时候例如:\r,把\ 和 r分开读取了,这样理解的话,就通顺了
- continue;
- if (ch == '\n')//这里和\r的疑问和理解一样
- return sb.toString();
- else
- sb.append((char) ch);
- }
- if (sb.length() != 0)// 这里解决了,最后一样没有回车,防止最后一行不被输出
- return sb.toString();
- return null;
- }
- public void close() throws IOException {
- if (fr != null) {
- fr.close();
- }
- }
- }
复制代码 假如文件中存在\r或则\n,那么结果会输出吗?我的理解正确吗??是不是每行都有默认的(在window上的)\r\n,自己输出的会分开读取,是不是可以这样理解???
|