我正在运行一些方法,这些方法接收许多文本文件,读取其内容,然后将有关其内容的内容写入新文件。我遇到的问题是,当文件存在时,程序非常慢。如果我删除该文件并运行该程序,那么它非常快。我正在为我的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 ...
}
问题是当这个文件存在时,一切都很慢。如果不是那么它很快。
答案 0 :(得分:1)
当你说"时,我会重温你所做的一切。 //做一些字符串操作"。
以下是我注意到的> 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 ...
}
}