【问题标题】:Sentinel value at the end of a file?文件末尾的哨兵值?
【发布时间】:2015-04-17 16:59:07
【问题描述】:

我同样阅读了File 的内容:

List<String> list = new ArrayList();
Scanner scanner = new Scanner(new FileInputStream(file));
while( scanner.hasNextLine())
{
  list.add(scanner.nextLine());
}

EOF,我想发送String "@@@" 作为哨兵值来知道它的结束。但是,正在读入的File 中没有"@@@"。关于我如何处理这个问题的任何建议?

【问题讨论】:

  • 如果您将行存储在列表中,为什么需要哨兵值? List 的最后一个元素是 EOF。

标签: java file while-loop eof sentinel


【解决方案1】:
List<String> list = new ArrayList();
Scanner scanner = new Scanner(new FileInputStream(file));
while( scanner.hasNextLine())
{
    list.add(scanner.nextLine());
}
list.add("@@@");

【讨论】:

    【解决方案2】:

    只需在您的 while 循环之后添加行 list.add("@@@");

    到那时你就会知道你已经读入了整个文件,所以只需添加常量字符串。您可能需要考虑使用以下内容分离字符串以提高可读性:

    public static final String SENTINEL = "@@@";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-11
      • 2022-01-23
      • 2021-10-23
      • 1970-01-01
      相关资源
      最近更新 更多