在循环中写入文件不起作用

时间:2017-10-12 11:01:47

标签: java io filewriter

我想打开一个文件,在循环中写入它(将所有内容附加到前面的行),然后关闭它。我已经在循环内的单个方法中实现了所有内容,并且我遇到了与this question类似的问题。所以,我正在尝试根据写作和开放必须在不同步骤中完成的建议来实现它。我现在的代码如下:

  PrintWriter out=  createAndOpenFile(fileName);

     for (int i = 0 ; i< test.size(); i++){
             writeToFile(mystring, out);
        }
    out.close();

以上方法的实现如下:

  private PrintWriter createAndOpenFile(String fileName) {

        try (FileWriter fw = new FileWriter(fileName);
             BufferedWriter bw = new BufferedWriter(fw);
             PrintWriter out = new PrintWriter(bw)) {
          return out;

        } catch (IOException e) {

            e.printStackTrace();
            return null;
        }

    }

 private void writeToFile(String features, PrintWriter out) {
       out.println(features);
       out.flush();
    }

有谁能告诉我我的代码有什么问题?

更新:“不工作”我的意思是文件最后是空的,虽然是创建的。

1 个答案:

答案 0 :(得分:1)

正如@khelwood所说,out在return语句中被关闭。这是预期的。

如果你在writeToFile内执行try,它就可以了(文件不会为空):

    try (FileWriter fw = new FileWriter("c:/temp/tt.txt");
            BufferedWriter bw = new BufferedWriter(fw);
            PrintWriter out = new PrintWriter(bw)) {
        writeToFile(mystring, out);
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }