我正在使用 DotNetZip 库以编程方式压缩我的文件。然后使用 SFTP 将生成的 zip 文件上传到服务器。
我的问题是,是否有办法指定在服务器上解压缩文件的顺序。
我不确定执行解压缩任务的工作。
编辑:zip 包含 100 个文档(通常是 PDF)和每个文档的 100 个元数据文件。元数据文件以 .metadata 结尾。具有此类扩展名的文件会触发服务器上的作业以查找元数据引用的文档。我希望在提取所有其他普通文件后从 zip 中提取这些 .metadata 文件。
我刚刚在我的 LAMP 服务器上测试了这个。在我的情况下,减压发生在以下情况。您需要在您的服务器上对此进行测试以在您的情况下找到它。
firstly
Folders a,A,b,B....--->z (alphabetically)
secondly
Files a,A,b,B....--->z (alphabetically)
根据您的情况测试解压缩顺序并命名元数据文件,以便它们在必要时位于列表的开头或结尾。
或者正如@Onkelborg所说,在您的情况下,解压缩操作可以在提取过程中遵循压缩顺序。如果不先测试,就没有明确的方法来判断。
即使这样,也可能有多个线程执行该操作,您可能会遇到问题,因此最安全的方法是将文件+元数据解压缩到临时位置,然后以正确的顺序移动它们。
此类事情的常见方法通常是提取到一个临时位置,然后将东西移动到拾取位置。
这样你就不应该有关于半写文件或排序的问题,并且任何解压缩失败都不会给消费者留下半个数据集。
虽然您无法使用ExtractAll
方法设置提取顺序,但您可以获取存档中的文件列表,Entries
并使用ExtractSelectedEntries
它来按您需要的顺序处理它们。
更新:
不,我对服务器和解压机制没有任何控制权
所以这不是 DotNetZip 使用的问题吗?.. 好的,计划 B:在另一个存档中发送元数据。但是可能存在解包不同步的问题。