0

我有一个 java 程序以编程方式将一个文件夹(以及其中的所有文件)从一个位置复制到另一个位置。现在假设用户在这个文件夹中粘贴了一个 zip 文件,然后解压缩它。同时我的程序启动时,它只复制文件它在文件夹中解压缩。我想等到文件解压缩完成。

因此,我正在寻找一种编程方式,使用该方式我可以检测到 zip 文件已完全解压缩,然后只能通过正常复制文件来恢复。有没有办法做到这一点?

4

2 回答 2

1

看看你是否可以重命名正在解压的文件。如果它不是“可重命名的”,则该文件可能已被锁定。

于 2012-12-17T12:47:11.463 回答
0

没有可靠的方法可以做到这一点,因为您无法控制解压缩器;例如,用户可以决定只解压缩一些文件。由于解压缩器不会告诉您用户在 UI 中选择了什么,因此没有可靠的方法可以知道“所有”文件何时被解压。

解决方法:

  1. 用户必须将文件解压缩到不同的文件夹中,然后文件移动到您观看的文件夹中。同一磁盘上的移动操作是原子的,因此这将确保您只获得完整的文件。

  2. 接受 ZIP 存档作为输入并自己解压缩。这样,您就可以完全控制解压过程,并确保您只处理完整的文件。此外,由于 ZIP“目录”位于 ZIP 存档的末尾,这也将确保您只处理完整的 ZIP 存档。

于 2012-12-17T12:49:31.697 回答