我有一些非常基本的代码,比如
while (scan.hasNextLine())
{
String temp = scan.nextLine();
System.out.println(temp);
}
其中scan是文件上的扫描程序。
但是,在一条约6k字符长的特定行上,临界值会在2470个字符之后切断。什么时候削减它没有什么特别之处;它位于“澳大利亚”一词的中间。如果我从行中删除字符,则删除的地方会发生变化;例如如果我删除文件中的字符0-100,那么扫描仪将获得之前的100-2570。
之前我曾使用Scanner获取更大的字符串。知道会出现什么问题吗?
答案 0 :(得分:8)
猜测,你可能在截止点上有一个流氓角色:在十六进制编辑器中查看文件而不是文本编辑器。也许在字符串的中间有一个嵌入的空字符,或者可能是\r
?我似乎不太可能Scanner.nextLine()
会随意砍掉它。
另一种想法是,你是否100%确定不全部存在?也许System.out.println正在砍掉字符串 - 再次由于嵌入了一些“奇怪”的字符?如果您打印temp.length()
会怎样?
BufferedReader.readLine()
而不是Scanner
阅读这些内容,是否可以获得所有内容?如果没有这一切,我只需调试Scanner.nextLine()
- 关于Java的一个好处就是可以调试到标准库中。