Shr*_*ath 3 java file infinite-loop filereader eof
我有以下代码,由于某种原因,永远不会到达文件的结尾,所以while循环永远不会结束.
public class Temp {
FileReader fr;
Temp() {
try {
fr = new FileReader("File path");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Temp ob = new Temp();
try {
char c;
while ((c = (char) ob.fr.read()) != -1) {
System.out.println(c);
}
ob.fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题!提前致谢 :)
你比较c-一个char,这是一个无符号的类型-以-1.不要那样做.它推动c到int,所以你会用65535反而结束了.相反,在循环体内做c一个int并进行转换char.
int c;
while ((c = ob.fr.read()) != -1) {
System.out.println((char) c);
}
Run Code Online (Sandbox Code Playgroud)
我还建议不要为了在变量中存储某些东西而创建一个新对象......你可以在FileReader这里使用一个局部变量.
我也建议:
FileReader开始,因为它总是使用默认编码.(使用FileInputStream带有InputStreamReader,或者从Java 7中使用Files.newBufferedReader.)| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |