我的问题是我有一个应用程序正在编写大量相对(100-500kb)的小型CSV文件(数十万和数十万)。然后通过sql loader调用(它的oracle db)将这些文件的内容加载到数据库中,这就是我必须要使用的内容。
所以,我需要不时删除这些小文件,以防止它们占用所有空间。我想将其附加到写入这些文件的活动,并将它们作为最后的最终步骤加载到db中。
我的问题是 - 如何在java中删除一堆小文件而不会降低性能开销?
提前致谢! 迈克尔
答案 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)