解压缩文件时指定订单

时间:2012-07-12 10:22:50

标签: c# dotnetzip

我正在使用DotNetZip库以编程方式压缩我的文件。然后使用SFTP将生成的zip文件上载到服务器上。

我的问题是,是否有办法可以指定在服务器上解压缩文件的顺序。

我不确定完成拉链任务的工作。

编辑: 该zip包含100个文档(通常为PDF)和每个文档的100个元数据文件。元数据文件以.metadata结尾。具有此类扩展名的文件会触发服务器上的作业以查找元数据引用的文档。我希望在提取所有其他普通文件后从zip中提取这些.metadata文件。

3 个答案:

答案 0 :(得分:0)

虽然您无法使用ExtractAll方法设置提取顺序,但您可以使用Entries获取存档中的文件列表,并使用ExtractSelectedEntries按照您的需要处理它们。
更新:

  

不,我对服务器和解压缩机制没有任何控制权

所以这不是DotNetZip使用的问题吗?好的,计划B:在另一个档案中发送元数据。但是,解包时缺乏同步可能存在问题。

答案 1 :(得分:0)

我刚在LAMP服务器上测试了这个。我的情况下的解压缩发生在下面。您需要在服务器上测试这个以便在您的情况下找到它。

firstly
    Folders a,A,b,B....--->z (alphabetically)
secondly
    Files a,A,b,B....--->z (alphabetically)

根据您的情况测试解压缩顺序,并根据需要命名元数据文件,使其最终位于列表的开头或结尾。

或者 @Onkelborg 说,在您的情况下,解压缩操作可能只是在提取过程中遵循zip命令。没有首先测试它就没有明确的判断方法。

即使这样,也可能有多个线程执行操作,您可能会遇到问题,因此最安全的方法是将文件+元数据解压缩到临时位置,然后按正确的顺序移动它们。

答案 2 :(得分:0)

此类事情的常见方法通常是提取到临时位置,然后将内容移动到取件位置。

这样你不应该有关于一半书面文件或订购的问题,并且任何解压缩失败都不会让消费者留下半个数据集。