Java--因为char类型无法强制转换负数导致IO读取文件无法停止问题

来源:互联网 发布:linux 代理 编辑:程序博客网 时间:2024/05/10 04:48

首先先抛出代码,大家可以试一试,可以看看有什么错误

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之间的数字,若想试的可以试一试。

1 0