Java 8文件I / O NoSuchElementException:找不到行

时间:2018-06-19 10:44:23

标签: java string io java.util.scanner printwriter

我的目标是读取格式化字符串并将其写入文件。 我实际上使用PrintWriter类输出和Scanner输入。

代码:

        PrintWriter out = null;
        Scanner in = null;
        File file = new File(System.getProperty("user.dir")+"/data/level1/grounds.txt");
        try {
            out = new PrintWriter(file);
        } catch (FileNotFoundException e) { e.printStackTrace(); }

        out.println("foo");

        try {
            in = new Scanner(file);
        } catch (FileNotFoundException e) { e.printStackTrace(); }

        System.out.println(in.nextLine());
        in.close();

文件已创建,但是in.nextLine()会抛出 NoSuchElementException:找不到行。 执行后(由此异常终止)文件为空。

请留下有关如何正确操作的建议。

2 个答案:

答案 0 :(得分:1)

完成所有书写操作后,应关闭输出打印机,使其反映在扫描仪中。

答案 1 :(得分:1)

这是因为out.println("foo");PrintWriter但不在文件中写入,您需要flush()才能在文件中包含内容,您也可以close()(这将自动flush()

  1. 简单刷新

    out.println("foo"); 
    out.flush()
    
  2. 关闭以冲洗

    out.println("foo"); 
    out.close()
    
  3. 使用自动刷新PrintWriter

    out = new PrintWriter(new FileOutputStream(file), true);