我正在为学校做作业,我正在尝试一些额外的功劳.该程序将演示给定数组大小的线性和二进制搜索之间的效率差异.我有一个循环设置,创建一个int [size]数组,搜索一个随机数,然后创建一个新的int [size*2]数组.
然后将结果写入文本文件.输出写得很好,但在多次编译和运行程序后,输出文件有很多部分数据.
这是我的代码嵌套在try/catch块中:
File output= new File("c:\\BigOhResults.txt");
int counter=2;
if (output.canWrite() && output.exists()) {
BufferedWriter out= new BufferedWriter(new FileWriter(output, true));
out.write(type+" \n\n"); //writes the search type
out.write(type+"Search Results\n\n");
while (counter <= data.size()) {
out.write(data.get(counter-1)+" millisecond runtime " +
"for a "+ data.get(counter-2)+" random number " +"sample size\n");
counter=counter+2;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以在每次运行程序时删除该输出文件中的文本?
我这样做的原因是教授要求结果打印输出并绘制数据.我已经完成了图形要求,并且工作正常.我只想让文件打印输出与图形打印输出匹配.
FileWriter构造函数的第二个参数是"追加",你传递的是"true".即因为您已将其设置为true,它会将您的新输出附加到文件的末尾.如果您传入false,它将擦除已存在的数据并将其写入新内容.
如前所述,[FileWriter][1] 构造函数允许您指定清除现有文本并从文件开头开始。关于代码的一些其他注释:
就像这样:
if (output.canWrite()) {
BufferedWriter out = null;
try {
out = new BufferedWriter(new FileWriter(output, false));
out.write(type+" \n\n"); //writes the search type
out.write(type+"Search Results\n\n");
while (counter <= data.size()) {
out.write(data.get(counter-1)+" millisecond runtime " +
"for a "+ data.get(counter-2)+" random number " +"sample size\n");
counter=counter+2;
}
} catch (IOException e) {
// Do what you want here, print a message or something
} finally {
if(out != null) {
try {
out.close();
} catch (IOException e) {
// Again, do what you want here
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
[1]:http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html#FileWriter (java.io.File,布尔值)