调用
的任何理由File.createTempFile("prefix", ".suffix", new File("C:\\");
可能需要40-50秒才能完成?
更新: 我敲了一个小测试工具,在C:\和默认的tmp文件夹上创建了100个测试文件。指定“C:\”始终比仅保留默认值大约0.9ms,允许JVM预热时间,GC暂停等(不知道为什么会这样,但不是问题。)
没有一次运行遭遇任何类似的延迟,这表明应用程序首先做了其他事情导致问题。
使用Suns JVM 1.6.0_12客户端。
答案 0 :(得分:2)
上一次开发基于swing的应用程序时,我遇到了JVM中的一个错误,如果桌面上有一个大的zip文件,它会导致文件请求者打开的速度非常慢。当文件夹中存在大量文件时,还存在另一个问题。
可能与您的问题存在关联。您使用的是哪个版本的JDK?
请查看此主题以获取一些信息:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4638397
http://groups.google.com/group/comp.lang.java.help/browse_thread/thread/ec8854f82f381123
磁盘碎片整理也是一个好主意。
答案 1 :(得分:1)
试一试:
try {
// Create temp file.
File temp = File.createTempFile("pattern", ".suffix");
// Delete temp file when program exits.
temp.deleteOnExit();
// Write to temp file
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
out.close();
} catch (IOException e) {
}
答案 2 :(得分:1)
我看到Windows上的文件删除只需要一分钟,但不会创建文件。我会检查以确保您最近进行了碎片整理,并确保您家中有合理的数量的文件。一旦你获得了超过1,000个文件(包括隐藏的文件),Windows就会非常困难。
如果您未指定c:\
并允许Java将文件放在其默认位置,会发生什么?
答案 3 :(得分:1)
病毒检查程序有时会使文件系统访问速度变慢,尤其是在Windows系统上。它们拦截了对文件系统的所有访问,并且在允许应用程序从磁盘写入或读取之前可以进行大量处理。
我会检查并禁用任何病毒检查软件,看看是否有帮助。
答案 4 :(得分:0)
如果其他建议无效(禁用病毒扫描程序并检查间谍软件),那么我建议先获取JDK源代码并运行IDE的调试程序,以查看它在createTempFile()
期间“挂起”的位置。
答案 5 :(得分:0)
FWIW,我最终不得不运行disk cleanup。