Java 如何创建可以重复写入文件的方法

Java 如何创建可以重复写入文件的方法,java,Java,我有一个方法,可以创建PrintWriter的新实例: public class Clazz { File temp = new File("temp.txt"); private void saveInTempFile(String text) { try ( PrintWriter pw = new PrintWriter(new FileWriter(temp, true)); ) {

我有一个方法,可以创建
PrintWriter
的新实例:

public class Clazz {

    File temp = new File("temp.txt");

    private void saveInTempFile(String text) {
        try (
            PrintWriter pw = new PrintWriter(new FileWriter(temp, true));
        ) {
            pw.write("text: " + text + '\n');
            pw.close();     
        } catch (IOException e) {
            System.out.println("An error occurred.");
        }
    }
}
现在,我需要在程序中的不同点调用此方法,并且我想在
temp
文件中添加一个新行(带有变量
text
)。但是,在这种状态下,它只在我第一次调用此方法时写入文件。我在使用和不使用
pw.close()时都试过了没有区别

我需要在每次调用此方法时添加一行新行,但只添加第一行

严格来说,不必使用
PrintWriter
FileWriter

我将非常感谢您的帮助。

就像我使用以下工具一样(我觉得它效率不高)


您可以打开PrintWriter,然后将其保存,以便在使用完毕之前不必关闭它。请将您的问题包括在内,其他人可以对其进行编译和测试,以显示您描述的确切行为。还包括执行MCVE时获得的输出。
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.io.File;

public class Clazz {
    protected PrintWriter out;
    private String outFileName;
    private String prefix = "";

    public Clazz(){
        this.outFileName = "test";
    }

    private void createOutput(String outFileName) {
        try {
            this.out = new PrintWriter(new FileWriter(outFileName));
        } catch (IOException e) {

            System.out.println("Couldn't open file '" + outFileName );
                    // "' for report output\n" + e.getMessage(), e);
        }       
    }

    protected void write(String txt) {
        if (out == null) {
            createOutput(outFileName);
        }
        out.println(prefix + txt);
    }

    public void done() {
        if (out != null) {
            out.close();
        }
    }

    public static void main( String[] args){

        Clazz obj = new Clazz();

        String output = "hi 1\n";
        obj.write(output);

        String output2 = "hello 2\n ";
        obj.write(output2);

        obj.done();
    }
}