扫描仪在大约2400个字符后切断我的字符串

Ven*_*rue 6 java string java.util.scanner

我有一些非常基本的代码

while (scan.hasNextLine())
{
    String temp = scan.nextLine();
    System.out.println(temp);
}
Run Code Online (Sandbox Code Playgroud)

其中scan是文件上的扫描仪.

然而,在一条约6k字符长的特定行上,临界值会在2470个字符之后切断.什么时候削减它没有什么特别之处; 它位于"澳大利亚"一词的中间.如果我从行中删除字符,它删除的地方会发生变化; 例如,如果我删除文件中的字符0-100,那么扫描仪将获得之前的100-2570.

之前我曾使用Scanner来制作更大的字符串.什么可能出错?

Jon*_*eet 8

猜测,你可能在截止点上有一个流氓角色:在十六进制编辑器中查看文件而不是文本编辑器.也许有一个嵌入的空字符,或者可能\r在字符串的中间?我似乎不太可能Scanner.nextLine()随便砍掉它.

另外一个想法,你是否100%确定它不是全部存在?也许System.out.println正在砍掉字符串 - 再次由于嵌入了一些"奇怪"的字符?打印时会发生什么temp.length()

编辑:我错误地解释了如果你删掉一些字符会发生什么.对于那个很抱歉.还有一些要检查的事情:

  • 如果你用BufferedReader.readLine()而不是读取线条Scanner,它会得到一切吗?
  • 你指定正确的编码吗?我不明白为什么会以这种特殊的方式出现,但这是需要考虑的事情......
  • 如果用"A"替换行中的所有字符(在文件中)是否会改变任何内容?
  • 如果你在这一行之前添加一个额外的行(或删除它之前的一行),这会改变什么吗?

如果没有完成所有这些,我只需要调试Scanner.nextLine()- 关于Java的一个好处就是你可以调试到标准库中.