【问题标题】:java.util.Scanner issue: stops reading after certain number of characters?java.util.Scanner 问题:在一定数量的字符后停止读取?
【发布时间】:2013-11-19 22:00:54
【问题描述】:

我正在使用 Scanner 读取大约 700 行文本(每行一个单词),并将每一行/单词存储为 String ArrayList 的一个元素,该元素由预定的 800 元素大小构成。然而,在 Eclipse 的变量模式下调试时,我注意到 ArrayList 的后面元素根本没有初始化 - 似乎 Scanner 停在一个单词的中间,在一个随机的行上。

  • 这不是分隔符的问题(我已经初始化了带有和不带有“\n”分隔符的扫描仪,没有区别)或文本内容本身——当我切换单词的顺序时,扫描仪在完全相同的字符数处停止读取。
  • 文本文件本身并不是很大——只有 6KB。
  • 我试过从 next() 切换到 nextLine(),也没有问题

我正在尝试使用资源:

try (Scanner stopwordImport = new Scanner(new File(stopwordFile))) {
        while (stopwordImport.hasNext()) {
            stopWords.add(stopwordImport.nextLine());
        }

...所以 Scanner 应该正在关闭。

我不知所措...怎么了?提前致谢。

【问题讨论】:

  • 有什么例外吗?有空的 catch 块吗?
  • 任何特殊字符?试试 bufferedreader,我遇到过像你这样的镜像问题。或者尝试将 hasNext() 切换到 hastNextLine() 以查看这是否会影响您声明的从 next() 到 nextLine() 的切换
  • 您是否尝试打印ArrayList? IDE 可能存在问题/配置错误。
  • 异常:最初捕获 FileNotFoundExceptions 并打印堆栈跟踪,更改为通用类型 Exception 但没有区别...
  • 这是什么意思I've initialized Scanner both with and without a "\n" delimiter?。另外,像@John 所说的那样使用hasNextLine()。这是更好的做法。

标签: java java.util.scanner java-io


【解决方案1】:

尝试FileReader 而不是File,这样就不会出现缓冲区问题。我遇到了同样的问题,这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多