读入文件 - 输入丢失

时间:2017-11-20 17:00:02

标签: java file

我试图帮助this用户提供答案,但在文件中阅读并不像我预期的那样工作。

如果我创建一个仅包含前两行OP的文件:

  

学习Java - William Lane -12.00 - Wiley - 0811234561

     

- William Stalling - 25.00 - Prentice Hall - 1304086641

输出符合预期:

Learning Java - William Lane -12.00 - Wiley - 0811234561
- William Stalling - 25.00 - Prentice Hall - 1304086641

但是当我添加第三行时:

  

学习Java - William Lane -12.00 - Wiley - 0811234561

     

- William Stalling - 25.00 - Prentice Hall - 1304086641

     

OOP编程 - Graham Winter - 32.50 - O' Reilly - 0471974555

输出为空白。

我的代码很简单,只是为了测试它。我直接从上面链接的问题复制并粘贴了文件内容。该行上是否有特殊字符,若然,如何找到它?为什么不打印其他线?

Scanner sc = new Scanner(new File("myfile"));
        while (sc.hasNextLine()) {
            String nameLine = sc.nextLine();
            System.out.println(nameLine);
        }

我通过调试器运行它,sc.hasNextLine返回false,程序结束。

修改

我基本上使用Notepad对此进行了测试,并注意到(在浏览器上)32.50和O' Reilly之间的差距略微拉长。所以我删除了这个破折号并保存,程序按预期工作。当我把它重新放入并保存并重新运行程序时,它不会显示任何内容。我每次都可以制作这个。

然后我在Notepad++进行了测试,一切顺利。快乐的日子。

所以我用WinMerge对两个文件进行了比较;它基本上表示唯一的区别是短划线,而Notepad++上的–只有Notepad,它

任何想法?

2 个答案:

答案 0 :(得分:0)

这可能是因为文件编码/字符集的差异。尝试将文件读取为UTF-8模式并检查。

答案 1 :(得分:-1)

您可以尝试这些更改,看看它是否适合您。在你的帖子中我复制了你的3行把它放到记事本中并保存然后在记事本++中打开。它永远不会出问题。enter image description here