本帖最后由 luoanjade 于 2014-3-15 08:14 编辑
首先,你上面两种写法是不一样的。代码一错,代码二对。
伪代码一:
FileReader fr = new FileReader("IOdemo.java");
for(;fr.read()!=-1;) //这次读取仅用于判断,后面的打印并非是它
System.out.print((char)fr.read()); //又读了一次,这次读取是在你for循环里面读完后的基础上。这次读出的结果被打印出来了
fr.close();
给你个例子:
文件中存有这样的数据:abcdefg
代码一打出来的结果是:bdf? (因为for里面的最后一次读取是g,然而他并不等于-1,所以for循环没有停,到循环里面再读一次,结果就读到了末尾了,打出来的这个问号应该就是文件末尾的标志-1。)
使用你的代码一来分析一下:
for(;fr.read()!=-1;) //在这里读到的是:a,c,e,g,-1(读到这里结束)
System.out.print((char)fr.read()); //这里读到的是:b,d,f,-1(读到这里也是末尾,但并没有结束,被打印出来了)
还有,楼主为何不使用while呢,非要写这么别扭的for循环。
|