我在 Java 中删除文件/文件夹时性能不佳。
代码很旧,我想知道 Java 7(我升级到的)是否真的提供了性能改进,或者只是另一种语法。(除非有好处,否则我不想重组所有东西)。我经常需要提取大 ZIP,然后删除内容,递归时间很残酷。
我也被困在 Windows 上。
谢谢
我建议使用社区已经提供的某种罐子。例如common-io.xx.jar、spring-core.jar
Eg, org.apache.commons.io.FileUtils;
FileUtils.copyDirectory(from, to);
FileUtils.deleteDirectory(childDir);
FileUtils.forceDelete(springConfigDir);
FileUtils.writeByteArrayToFile(file, data);
org.springframework.util.FileSystemUtils;
FileSystemUtils.copyRecursively(from, to);
FileSystemUtils.deleteRecursively(dir);
文件 IO 非常依赖于硬件的性能。许多 HDD 每秒可以执行 80 - 120 IOPS。如果要打开文件,每秒最多可以读取 120 个文件。要删除一个文件,它可能需要两次更新或每秒最多删除 60 个文件。有了这些限制,您在软件中几乎无能为力,这将产生任何影响。
但是,如果您有 SSD,这些可以每秒执行 80,000 到 230,000 IOPS(增加一千多倍)此时您所做的软件可能会有所不同,但是当您处理压缩文件时,它最喜欢那个 CPU此时将成为您的瓶颈。