我创建了一个简单的程序,该程序使用不同的算法对输入文件中的整数进行排序。我还使用文件编写器将结果输出到另一个文件。不幸的是,无论我如何更改代码,文件都会被覆盖。有什么建议吗?
曾经在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");
文件不断被覆盖,我如何停止此操作并将其添加到文件中?
答案 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();
}
我尝试了您的代码,您的问题不是文件被覆盖,而是您在第一次迭代中关闭了输出流。