Java,IO - 删除文件的最快方法

时间:2010-07-28 17:43:03

标签: java file io nio

我的问题是我有一个应用程序正在编写大量相对(100-500kb)的小型CSV文件(数十万和数十万)。然后通过sql loader调用(它的oracle db)将这些文件的内容加载到数据库中,这就是我必须要使用的内容。

所以,我需要不时删除这些小文件,以防止它们占用所有空间。我想将其附加到写入这些文件的活动,并将它们作为最后的最终步骤加载到db中。

我的问题是 - 如何在java中删除一堆小文件而不会降低性能开销?

提前致谢! 迈克尔

5 个答案:

答案 0 :(得分:13)

好吧,file.delete()应该足够了(它在内部实现为本机方法)

答案 1 :(得分:4)

我建议您查看Apache Commons IO库。它们有一些非常有用的方法可以删除FileUtils类中的文件。

答案 2 :(得分:2)

如果你弹出并让系统删除它们,你可能会发现它快一个数量级。你必须能够到达一个停止点(没有文件正在被处理),然后shell并删除“*”或或者你的操作系统。

(注意,这会让你的程序非常依赖!)

在Windows和Mac上确保您绕过了垃圾桶功能!

关于del 或rm *的好处是他们应该批量操作而不是重复打开,修改和关闭目录。

您也可以使用a001,a002,a003等模式编写文件名,当您达到a999时,转到b001并删除*。

答案 3 :(得分:1)

FileUtils.cleanDirectory(new File("/usr/share/test")); //linux

FileUtils.cleanDirectory(new File("C:\\test")); //windows

答案 4 :(得分:0)

您可以使用java.nio.file.Files的以下方法

delete(Path path)
deleteIfExists(Path path)

有关更多信息,请参见this article