A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiazhixing 中级黑马   /  2014-6-6 19:34  /  2567 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiazhixing 于 2014-6-8 11:30 编辑


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

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

12 个回复

倒序浏览
你的 da.txt大小是几个字节的啊????
回复 使用道具 举报
江祖贇 发表于 2014-6-6 19:37
你的 da.txt大小是几个字节的啊????

da.txt是自己手动新建的一个文件
回复 使用道具 举报
xiazhixing 发表于 2014-6-6 19:38
da.txt是自己手动新建的一个文件

问下 那文件多大 :(
回复 使用道具 举报
江祖贇 发表于 2014-6-6 19:43
问下 那文件多大

大小吗,1KB的
回复 使用道具 举报
我也出现过类似的问题
回复 使用道具 举报
坐等楼下解答
回复 使用道具 举报
使用Eclipse不会出现问号,命令号就会有
回复 使用道具 举报
建议看看这篇文章http://blog.csdn.net/jackpk/article/details/5702964/
回复 使用道具 举报
这个是隐藏字符,通过输入输出流就会显示成“?”。
回复 使用道具 举报
你记事本最后按回车没
回复 使用道具 举报
本帖最后由 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码表里面是没有对应的,所以不能识别

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
直接修改代码
while((ch = fs.read()) != -1) {

}
这样子就不会讲读到结尾的EOF打印
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马