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

时间:2010-05-23 07:42:31

标签: java string java.util.scanner

我有一些非常基本的代码,比如

while (scan.hasNextLine())
{
    String temp = scan.nextLine();
    System.out.println(temp);
}

其中scan是文件上的扫描程序。

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

之前我曾使用Scanner获取更大的字符串。知道会出现什么问题吗?

1 个答案:

答案 0 :(得分:8)

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

另一种想法是,你是否100%确定全部存在?也许System.out.println正在砍掉字符串 - 再次由于嵌入了一些“奇怪”的字符?如果您打印temp.length()会怎样?

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

  • 如果您使用BufferedReader.readLine()而不是Scanner阅读这些内容,是否可以获得所有内容?
  • 您是否指定了正确的编码?我不明白为什么会以这种特殊的方式出现,但这是需要考虑的事情......
  • 如果用“A”替换行中的所有字符(在文件中)是否会改变任何内容?
  • 如果您在此行之前添加额外的行(或删除之前的行),这会改变什么吗?

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