本帖最后由 李万海 于 2013-3-31 20:32 编辑
- import java.io.*;
- class MyBufferedReader //extends Reader//自定义装饰类,模拟BufferedReader
- {
- private Reader r;
- MyBufferedReader(Reader r)
- {
- this.r = r;
- }
- //读一行的方法。
- public String myReadLine()throws IOException
- {
- StringBuilder sb = new StringBuilder();
- int ch = 0;
- while((ch=r.read())!=-1)
- {
- if(ch=='\r')
- continue;
- if(ch=='\n')
- return sb.toString();
- else
- sb.append((char)ch);
- }
- if(sb.length()!=0)
- return sb.toString();
- return null;
- }
- public void myClose()throws IOException
- {
- r.close();
- }
- }
- class Demo
- {
- public static void main(String[]args)throws IOException
- {
- MyBufferedReader mybr=new MyBufferedReader(new FileReader("ceshi.java"));
- BufferedWriter bufw=new BufferedWriter(new FileWriter("F:\\ooo.java"));
- String s=null;
- while((s=mybr.myReadLine())!=null)
- {
- bufw.write(s);
- bufw.flush();
- bufw.newLine();
- }
-
- }
- }
复制代码这个是老师的例题,我传入的ceishi.java也就是普通的一个java文件,问题是sb.toString()到底吧\t和\n放到StringBuilder里面没, 我理解是当读到\t的时候,退出本次循环,读下一个\n,这时符合if(ch=='\n')的条件,toString了,我理解错了没? 第二个问题是,return sb.toString();这里StringBuilder里并没有清空啊,前面的数据应该都在里面的啊, 复制应该重复的,可事实没有,我哪里理解错了?
|