黑马程序员技术交流社区
标题:
FileReader的问题
[打印本页]
作者:
爽亮前程
时间:
2014-11-20 21:05
标题:
FileReader的问题
本帖最后由 爽亮前程 于 2014-11-20 21:11 编辑
<p>import java.io.FileReader;
import java.io.IOException;
public class StringTest5 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("d:\\1.txt");
while (fr.read() != -1) {
System.out.print((char)fr.read());
}
}
}</p><p> </p><p> </p><p> </p><p>
import java.io.FileReader;
import java.io.IOException;
public class StringTest5 {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("d:\\1.txt");
int ch=0;
while ((ch=fr.read()) != -1) {
System.out.print((char)ch);
}
}
}</p>
复制代码
}各位大神,请问第一段代码和第二段代码有什么区别吗?
为什么第一段代码操作读取的文字会乱码,第二个则正常呢?
作者:
郑飞
时间:
2014-11-20 21:17
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半
作者:
王小忠
时间:
2014-11-20 21:17
这是因为你在调用read()方法是会执行一个类似迭代器里面hasNext()和next()的执行效果,说白了也就是你的第一段代码里两次调用的read()方法已经不是指向同一个字符了.
作者:
高昌德
时间:
2014-11-20 21:40
调用了两次,read()方法会自动读下一个
作者:
DamonZh
时间:
2014-11-20 21:44
第一个你在while判断条件里读了一次,又在while体内读了一次,但你只打印了一次。所以就是乱码咯
作者:
爽亮前程
时间:
2014-11-20 21:51
郑飞 发表于 2014-11-20 21:17
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半
哦、想明白了。多谢啦。
作者:
爽亮前程
时间:
2014-11-21 00:36
郑飞 发表于 2014-11-20 21:17
第一段代码read()方法一个循环你调用2次 只打印了一次 相当于只输出一半
明白了。谢谢啦。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2