发布
社区首页 >问答首页 >同一卷不能同时用作源和目标。

同一卷不能同时用作源和目标。
EN

Stack Overflow用户
提问于 2015-07-08 07:56:28
回答 3查看 16.6K关注 0票数 34

我使用以下代码创建拆分档案:

代码语言:javascript
代码运行次数:0
复制
string filename = "FileName.pdf";
using (ZipFile zip = new ZipFile())
{
    zip.UseZip64WhenSaving = Zip64Option.Default;
    zip.CompressionLevel = Ionic.Zlib.CompressionLevel.Default;
    using (FileStream stream = new FileStream(temp, FileMode.Open))
    {
        zip.AddEntry(filename, stream);
        zip.MaxOutputSegmentSize = settings.AttachmentSize * (1024 * 1024);
        zip.Save(zipFileName);
    }
}

上面的代码生成3个文件:file.zip, file.z01 and file.z02。当我右键单击该zip文件并选择Extract All (不使用WinRAR或其他压缩软件来解压缩,只使用内置的Windows )时,它会给出以下错误:

同一卷不能同时用作源和目标。

奇怪的是,它只发生在我第一次尝试提取文件时,接下来的提取是可以的,所以首先必须是压缩文件的方式。

更新1

即使我提取到另一个文件夹,也会发生同样的情况。

已经在DotNetZip Codeplex网站上就这个问题进行了讨论,但是这个问题似乎还没有得到解决。

http://dotnetzip.codeplex.com/discussions/239172

http://dotnetzip.codeplex.com/discussions/371005

更新2

查看MaxOutputSegmentSize属性的文档,引用如下:

我不相信Windows资源管理器可以提取拆分的存档文件。

但是没有进一步的解释了为什么。我认为这是假阳性,因为如上所述,

只有在我第一次尝试解压缩文件时才会发生这种情况,接下来的提取是可以的。

我使用的是Windows8.1 64位.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-10 11:59:27

在搜索软件失败的原因时,首先要做的是查找错误消息的来源。你用首先使用谷歌做的。第二次命中(现在)是金,来人呀已经解压缩了Windows的可执行文件,并将这个特定的字符串定位为资源ID #10209,在一个名为zipfldr.dll的文件中具有Microsoft版权通知。

这是一个很好的匹配,zipfldr.dll是shell名称空间扩展,用于显示.zip文件的内容,就像它是一个文件夹一样。您可以在Regedit.exe中看到它,导航到HKEY_CLASSES_ROOT\CLSID\ {E88DCCE0-B7B3-11d1-A9F0-00AA0060FA31}进行主注册。HKEY_CLASSES_ROOT\SystemFileAssociations\ .zip\CLSID注册表项将其与.zip文件关联。

所以你有一个很难理解的事实,那就是资源管理器的扩展。当然,你对此无能为力。唯一的疑问是,您使用的Zip库可能是错误的跨文件内容,从而导致扩展名掉了下来。如果看到一个以上的库跳转了这个错误,那么Ionic和Dotnetzip都有完全相同的错误的可能性就会大大降低。不是零,程序员往往有一个“他们怎么做的”窥视其他程序员的代码的灵感。事实上,这个错误是假的,把钉子钉在棺材里,你会期望坏的压缩存档内容会反复出错。

您可能能够反向设计潜在的问题,您可以使用SysInternals的流程监视器进行反向工程。您将看到Explorer读取和写入文件。可能在临时目录中,如果.zip文件已经存在于该目录中,您可能会得到类似于此的错误。在大多数机器上,TEMP是一个非常混乱的文件夹,太多的程序无法在它们自己之后进行适当的清理。包括zip库,这是一种吸引人的理论,没有其他证据支持:)

如果这不能实现,那么最终的退路是微软。他们有一个1800个电话号码,在那里你可以得到他们的产品问题的支持。我已经用过好几次了,他们总是解决我的问题并退还预付的费用。然而,这是一个Windows问题,一个拥有10亿用户的产品。充其量,你将得到一个解决办法,一个真正的软件修复是非常不可能的。并非完全不可能,它已经完成了。但他们推荐的解决办法很有可能是“使用像Winzip这样的第三方实用程序”。不是你想听的。

票数 15
EN

Stack Overflow用户

发布于 2019-09-06 20:04:36

请将zip文件移动到不同的文件夹,或者尝试使用7zip解压缩这些文件。

票数 3
EN

Stack Overflow用户

发布于 2022-04-16 17:20:20

  1. 下载7zip并安装它。
  2. 将zip文件移动到另一个位置。
  3. 然后,右键单击文件夹->选择7zip ->解压此处
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31286707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档