黑马程序员技术交流社区

标题: 打印结果解读 [打印本页]

作者: xiazhixing    时间: 2014-6-6 19:34
标题: 打印结果解读
本帖最后由 xiazhixing 于 2014-6-8 11:30 编辑


依次读取文件中的字符,为啥最后面打印出来了一个问号?

作者: 江祖贇    时间: 2014-6-6 19:37
你的 da.txt大小是几个字节的啊????
作者: xiazhixing    时间: 2014-6-6 19:38
江祖贇 发表于 2014-6-6 19:37
你的 da.txt大小是几个字节的啊????

da.txt是自己手动新建的一个文件
作者: 江祖贇    时间: 2014-6-6 19:43
xiazhixing 发表于 2014-6-6 19:38
da.txt是自己手动新建的一个文件

问下 那文件多大 :(
作者: xiazhixing    时间: 2014-6-6 19:52
江祖贇 发表于 2014-6-6 19:43
问下 那文件多大

大小吗,1KB的
作者: crazystraw    时间: 2014-6-6 21:06
我也出现过类似的问题
作者: xiazhixing    时间: 2014-6-6 21:07
坐等楼下解答
作者: pk49800    时间: 2014-6-7 00:06
使用Eclipse不会出现问号,命令号就会有
作者: pk49800    时间: 2014-6-7 00:08
建议看看这篇文章http://blog.csdn.net/jackpk/article/details/5702964/
作者: 尹稳定    时间: 2014-6-7 00:53
这个是隐藏字符,通过输入输出流就会显示成“?”。
作者: never615    时间: 2014-6-7 00:57
你记事本最后按回车没
作者: pk49800    时间: 2014-6-7 15:10
本帖最后由 pk49800 于 2014-6-7 15:21 编辑

  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;

  7. public class TestRead {

  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 try {
  11.                         File f = new File("d:\\da.txt");
  12.                         FileInputStream fis = new FileInputStream(f);
  13.                         BufferedReader br = new BufferedReader(new InputStreamReader(fis));
  14.                         //int ch = br.read();
  15.                         while(true){
  16.                                 int ch = br.read();
  17.                                 if(ch != -1)
  18.                                 System.out.println((char)ch);
  19.                                 else
  20.                                 break;
  21.                         }
  22.                         /*while(true){
  23.                                 int ch = br.read();
  24.                                 if(ch != -1)
  25.                                 System.out.println((char)ch);
  26.                                 else
  27.                                 break;
  28.                         }
  29.                         */
  30.                         br.close();
  31.                 } catch (FileNotFoundException e) {
  32.                         // TODO Auto-generated catch block
  33.                         e.printStackTrace();
  34.                 } catch (IOException e) {
  35.                         // TODO Auto-generated catch block
  36.                         e.printStackTrace();
  37.                 }

  38.         }

  39. }
复制代码
改成这样就不会出现了,因为你的输出把文件结尾的标识“-1”都打印出来,但是这个字符在ASII码表里面是没有对应的,所以不能识别

作者: hello_csu    时间: 2015-4-5 18:04
直接修改代码
while((ch = fs.read()) != -1) {

}
这样子就不会讲读到结尾的EOF打印




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2