Java FileWriter只写入循环中的最后一行。需要它来写所有输入的日志吗

Java FileWriter只写入循环中的最后一行。需要它来写所有输入的日志吗,java,Java,我有一个JOptionPane,它会提示用户提问并接收随机生成的答案。我正在尝试编写一个记录所有问题和答案的文件,但FileWriter只记录最后一个问题和答案。以下是我的代码: import javax.swing.JOptionPane; import java.util.Random; import java.io.*; public class Magic8Ball { public static void main(String [] args)throws Excepti

我有一个JOptionPane,它会提示用户提问并接收随机生成的答案。我正在尝试编写一个记录所有问题和答案的文件,但FileWriter只记录最后一个问题和答案。以下是我的代码:

import javax.swing.JOptionPane;
import java.util.Random;
import java.io.*;

public class Magic8Ball {

    public static void main(String [] args)throws Exception {

        final String QUIT = "quit";
        Random rand = new Random();
        int max = 7;
        int min = 0;
        int randomNum;

        FileWriter fw = new FileWriter("fortune.txt");
        PrintWriter pw = new PrintWriter(fw);
        BufferedWriter out = new BufferedWriter(fw);

        String[] answers = new String[8];

        String question = JOptionPane.showInputDialog(" Enter a question or " + QUIT + " to exit " );

        Create8Ball(answers);    

        while (!question.equals(QUIT)) {

            randomNum = rand.nextInt((max - min) + 1) + min;   

          System.out.println(answers[randomNum]);

          pw.println("Question: " + question);
          pw.println("Fortune Response: " + answers[randomNum]);


           question = JOptionPane.showInputDialog(" Enter a question or " + QUIT + " to exit " );
            }

        pw.close();
        System.exit(0);

       }

       public static void Create8Ball(String answers[]) throws Exception
       {
         FileReader fr = new FileReader ("answers.txt");
         BufferedReader br = new BufferedReader (fr);

         String dog = null;
         int cat = 0;
         while ((dog = br.readLine()) != null)
          {
          answers[cat] = dog;
          cat++; 
           }
         //close the input file
         br.close();

       }

     }
附加到文件:

FileWriter fw = new FileWriter("fortune.txt", true);

您可能需要此构造函数
FileWriter(字符串文件名,布尔追加)
。它将构造一个FileWriter对象,给定一个文件名,其中布尔值指示是否追加写入的数据


可能这一个会起作用。
FileWriter fw=newfilewriter(“fortune.txt”,true);

谢谢!我拿出了BufferedWriter并在pw.close()之前添加了pw.flush();似乎正在做这项工作。