循环写入文件不起作用

Writing to a file in loop doesn't work

我想打开一个文件,循环写入(将所有内容附加到前面的行),然后关闭它。我已经在循环内用一个方法实现了所有内容,但我遇到了类似于 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();
    }

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

更新:“不工作”是指文件虽然已创建,但最后还是空的。

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

如果您在 try 中执行 writeToFile,它会起作用(文件不会为空):

    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();
    }