[英]Existing file slowing down java program
我正在一起运行一些方法,这些方法可以接收许多文本文件,读取它们的内容,然后将有关其内容的内容写到一个新文件中。 我的问题是,当文件存在时,程序速度很慢。 如果删除文件并运行程序,则速度非常快。 我为我的I / O使用BufferedReader和BufferedWriter。 我觉得我没有找到一个简单的答案。 提前致谢! 如果可能的话,我宁愿不发布代码,对不起!
编辑:
这是一般情况
File path= new File("some path");
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(path, false));
//do some string manipulation
writer.append(string);
writer.newLine();
...
//once done
writer.close();
}catch(IOException e) {
//... handle this ...
}
问题在于,当该文件存在时,一切都会变慢。 如果没有,那就快了。
当您说“ //做一些字符串操作”时,我将重新审视您的工作。
这是我通过> 1000次迭代发现的:
我还做了一个此测试的版本,该文件始终总是首先被删除。 没关系。 这是我运行的代码:
public static void main(String[] args) {
long s = System.currentTimeMillis();
File path = new File("output.txt");
long stop = System.currentTimeMillis();
System.out.println("handle acquired " + (stop - s) );
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(path, false));
//do some string manipulation
s = System.currentTimeMillis();
for (int i =0; i < 10000000; i++) {
String string = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ";
writer.append(string);
writer.newLine();
}
stop = System.currentTimeMillis();
System.out.println("loop end " + (stop - s) );
s = System.currentTimeMillis();
writer.close();
stop = System.currentTimeMillis();
System.out.println("writer closed " + (stop - s) );
}catch(IOException e) {
//... handle this ...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.