文件 Reader 无法正常工作?
File Reader not working properly?
我有以下代码,由于某种原因从未到达文件末尾,所以 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();
}
}
谁能帮我解决这个问题!?提前致谢:)
您正在比较 c
- char
,它是 unsigned 类型 - 与 -1。不要那样做。它会将 c
提升为 int
,因此您最终会得到 65535。相反,将 c
设为 int
并在循环体内转换为 char
。
int c;
while ((c = ob.fr.read()) != -1) {
System.out.println((char) c);
}
我还建议不要仅仅为了在变量中存储一些东西而创建一个新对象...您可以在此处为 FileReader
使用局部变量。
我还建议:
- 不是抛出异常就继续,就好像什么都没发生一样
- 使用 try-with-resources 而不是手动关闭 reader
- 避免从
FileReader
开始,因为它始终使用默认编码。 (使用 FileInputStream
和 InputStreamReader
,或者从 Java 7 开始使用 Files.newBufferedReader
。)
我有以下代码,由于某种原因从未到达文件末尾,所以 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();
}
}
谁能帮我解决这个问题!?提前致谢:)
您正在比较 c
- char
,它是 unsigned 类型 - 与 -1。不要那样做。它会将 c
提升为 int
,因此您最终会得到 65535。相反,将 c
设为 int
并在循环体内转换为 char
。
int c;
while ((c = ob.fr.read()) != -1) {
System.out.println((char) c);
}
我还建议不要仅仅为了在变量中存储一些东西而创建一个新对象...您可以在此处为 FileReader
使用局部变量。
我还建议:
- 不是抛出异常就继续,就好像什么都没发生一样
- 使用 try-with-resources 而不是手动关闭 reader
- 避免从
FileReader
开始,因为它始终使用默认编码。 (使用FileInputStream
和InputStreamReader
,或者从 Java 7 开始使用Files.newBufferedReader
。)