java 因为 char 类型无法强制转换负数导致 IO 读取文件无法停止问题:先抛出代码,大家可以试一试,可以看看有什么错误。
- 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 之间的数字,若想试的可以试一试。就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-08/18335820.html