我有一个 java 程序以编程方式将一个文件夹(以及其中的所有文件)从一个位置复制到另一个位置。现在假设用户在这个文件夹中粘贴了一个 zip 文件,然后解压缩它。同时我的程序启动时,它只复制文件它在文件夹中解压缩。我想等到文件解压缩完成。
因此,我正在寻找一种编程方式,使用该方式我可以检测到 zip 文件已完全解压缩,然后只能通过正常复制文件来恢复。有没有办法做到这一点?
我有一个 java 程序以编程方式将一个文件夹(以及其中的所有文件)从一个位置复制到另一个位置。现在假设用户在这个文件夹中粘贴了一个 zip 文件,然后解压缩它。同时我的程序启动时,它只复制文件它在文件夹中解压缩。我想等到文件解压缩完成。
因此,我正在寻找一种编程方式,使用该方式我可以检测到 zip 文件已完全解压缩,然后只能通过正常复制文件来恢复。有没有办法做到这一点?
看看你是否可以重命名正在解压的文件。如果它不是“可重命名的”,则该文件可能已被锁定。
没有可靠的方法可以做到这一点,因为您无法控制解压缩器;例如,用户可以决定只解压缩一些文件。由于解压缩器不会告诉您用户在 UI 中选择了什么,因此没有可靠的方法可以知道“所有”文件何时被解压。
解决方法:
用户必须将文件解压缩到不同的文件夹中,然后将文件移动到您观看的文件夹中。同一磁盘上的移动操作是原子的,因此这将确保您只获得完整的文件。
接受 ZIP 存档作为输入并自己解压缩。这样,您就可以完全控制解压过程,并确保您只处理完整的文件。此外,由于 ZIP“目录”位于 ZIP 存档的末尾,这也将确保您只处理完整的 ZIP 存档。