我有一些看起来或多或少像这样的代码:
while(scanner.hasNext())
{
if(scanner.findInLine("Test") !=null) {
//do some things
}else{
scanner.nextLine();
}
}
我用它来解析一个~10MB 的文本文件。问题是,如果我在 while() 和scanner.nextLine() 上设置断点,我可以看到有时扫描仪位置(在调试窗口中)会回到零。我认为这导致我某种循环爆炸,因为 findInLine() 中的正则表达式从零开始,查看一些文本,推进位置,然后它随机设置回零,所以它必须重新- 再次解析所有文本。
有什么想法可能导致这种情况吗?我是否以正确的方式这样做?
谢谢
一些附加信息:
Scanner 是从 InputStream 实例化的。调试后,似乎有一个 Scanner 使用的 HeapCharBuffer,它一次只允许 1024 个字符,然后重置。有没有办法避免这种情况,或者做不同的事情?这似乎是可以扫描的少量字符。
德里克