将boolean设置为true,但文件编写器仍会覆盖文件,有什么建议吗?

时间:2019-04-30 20:01:07

标签: java filewriter

我创建了一个简单的程序,该程序使用不同的算法对输入文件中的整数进行排序。我还使用文件编写器将结果输出到另一个文件。不幸的是,无论我如何更改代码,文件都会被覆盖。有什么建议吗?

曾经在Google上寻找答案,并尝试更改了我输入语法的方式,但没有任何效果。

重要的位:

设置作家

auto my_vector = Vector{};
my_vector[0] = 1;
// or
int x = my_vector[0];
// etc...

输出到文件

try {

        FileWriter fileWriter = new FileWriter ("Sorted output.txt");

        //BufferedWriter bufferedWriter = new BufferedWriter (fileWriter);

        PrintWriter out = new PrintWriter (new FileWriter("Sorted output.txt", true));

它工作正常,但是它在do while循环中使用,带有嵌套的if语句,并且每个覆盖另一个。

在需要时保留其他代码-已更新-仍然无法正常工作

 out.println("User's own data set sorted using bubble sort.");
                      out.println(unsortedArray + Arrays.deepToString(FileOne));
                      out.println("Sorted Array looks like this:" + Arrays.toString(intArrayBubble));
                      out.println(timeToSort + bubbleSortIs + bubbleTime + "ms");

文件不断被覆盖,我如何停止此操作并将其添加到文件中?

2 个答案:

答案 0 :(得分:1)

您不需要第一个FileWriter fileWriter = new FileWriter("Sorted output.txt");;这实际上是在创建/覆盖文件,然后您的PrintWriter再次将其打开以进行追加。

所以,只需更改

// ... omitting beginning
try {
    FileWriter fileWriter = new FileWriter ("Sorted output.txt");
    //BufferedWriter bufferedWriter = new BufferedWriter (fileWriter);
    PrintWriter out = new PrintWriter (new FileWriter("Sorted output.txt", true));
    do { 
// ... omitting rest

// ... omitting beginning
try {
    //BufferedWriter bufferedWriter = new BufferedWriter (fileWriter);
    PrintWriter out = new PrintWriter (new FileWriter("Sorted output.txt", true));
    do { 
// ... omitting rest

答案 1 :(得分:1)

将out.close()移出循环

            else {
                System.out.println("Please enter a valid option i.e. 1,2 or 3");
                tInput.next();
            }

            out.flush();
           /* THIS  -> out.close(); <- THIS */
            //tInput.close();
        }while (userSelection != optionThree);  
         out.close();

        }

我尝试了您的代码,您的问题不是文件被覆盖,而是您在第一次迭代中关闭了输出流。