Java 文件读取器工作不正常?
我有下面的代码,由于某种原因,永远不会到达文件的结尾,所以while循环永远不会结束Java 文件读取器工作不正常?,java,file,infinite-loop,filereader,eof,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[]
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();
}
}
谁能帮我解决这个问题!?提前感谢:)您正在将
c
-achar
与-1进行比较,这是一种无符号类型。不要那样做。它将c
升级为int
,因此您最终将得到65535。相反,将c
设置为int
,并在循环体内部对char
进行强制转换
int c;
while ((c = ob.fr.read()) != -1) {
System.out.println((char) c);
}
我还建议不要仅仅为了在变量中存储某些内容而创建新对象。。。您可以在此处为FileReader
使用局部变量
我还建议:
- 不只是在抛出异常时继续,就好像什么都没有发生一样
- 使用try with resources而不是手动关闭读卡器
- 避免使用
,因为它总是使用默认编码。(将FileReader
与FileInputStream
一起使用,或者从Java 7直接使用。)InputStreamReader