首先先抛出代码,大家可以试一试,可以看看有什么错误
char ch = 0;
try {
//随便读取一个文件
InputStreamReader in = new InputStreamReader(new FileInputStream(
"C:\\Users\\Administrator\\Desktop\\222.txt"));
//循环不断的读取文件内容
while ((int) ch != -1) {
ch = (char) in.read();
//输出内容,会发现无法停止
System.out.println(ch);
}
} catch (Exception e) {
e.printStackTrace();
}
由于char数据类型无法强制转换负数,导致强制转换成‘?‘,所以最终无法停止读取
修改一下代码,不再对ch强制转换负数。
int ch = 0;
try {
//随便读取一个文件
InputStreamReader in = new InputStreamReader(new FileInputStream(
"C:\\Users\\Administrator\\Desktop\\222.txt"));
//循环不断的读取文件内容
while ( ch != -1) {
ch = in.read();
//输出内容,会发现可以停止
System.out.println((char)ch);
}
} catch (Exception e) {
e.printStackTrace();
}
因为Java把字符当作整数对待,Java采用的是unicode编码(无符号编码),所以char型可以转换0~65536之间的数字,若想试的可以试一试。