如何使用“ SHFILEOPSTRUCT”从ZipFile解压缩单个文件?

k1ll3r8e

我知道这个问题被问过1000次,但我不想使用任何外部工具(例如DotNetZipSharpZipLib)。

我目前有这段工作代码:

string _from = Path.Combine(apk, "*.*") + '\0';
string _to = destination + '\0' + Path.Combine(destination, "*.*") + '\0';
NativeMethods.SHFILEOPSTRUCT fileop = new NativeMethods.SHFILEOPSTRUCT();
fileop.pFrom = _from;
fileop.pTo = _to;
fileop.wFunc = NativeMethods.FO_Type.FO_COPY;
fileop.fFlags = NativeMethods.FOF_Flag.FOF_WANTNUKEWARNING;
NativeMethods.SHFileOperation(ref fileop);

我的问题是我无法提取/复制单个文件/文件夹。如果我*.*res\\drawable\\icon.png替换例如,它将什么都不做。

有人可以告诉我如何使用来提取单个文件/文件夹SHFILEOPSTRUCT吗?我想念什么吗?

该代码支持:

框架版本:.Net Client 4

操作系统:WinXP,8,8.1,10

编辑(通知):

当您在C#线程中使用这段代码时,总会出现“超出路径长度”错误……在这种情况下,您需要使用“分派器”。

戴维·赫弗南

SHFileOperation无法从ZIP文件提取单个项目。我看到的选项是:

  1. 包括一个第三方ZIP库。
  2. 切换到.net 4.5并使用框架提供的ZIP库。
  3. 查看ZipPackagefromSystem.IO.Packaging是否具有足够的功能来满足您的需求。
  4. 编写您自己的邮政编码。
  5. 将整个ZIP文件提取到一个临时目录中,然后挑选您需要的部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用JAVA ZipFile类解压缩Zip文件

来自分类Dev

使用JAVA ZipFile类解压缩Zip文件

来自分类Dev

解压缩时如何使用bash在Debian中压缩文件并弹出单个目录

来自分类Dev

无法使用python zipfile库的密码解压缩.zip文件

来自分类Dev

使用zipfile解压缩档案会将exe转换为文本文件(MacOS)

来自分类Dev

如何“解压缩” zip文件?

来自分类Dev

如何解压缩“ .zip”文件?

来自分类Dev

如何“解压缩” ZIM文件?

来自分类Dev

如何解压缩该文件

来自分类Dev

如何从终端解压缩zip文件?

来自分类Dev

如何解压缩文件

来自分类Dev

使用python解压缩大文件

来自分类Dev

使用Swift解压缩zip文件

来自分类Dev

使用python解压缩大文件

来自分类Dev

使用通配符解压缩特定文件

来自分类Dev

使用bash解压缩bzip文件

来自分类Dev

解压缩使用哪种方法在存档中查找单个文件?

来自分类Dev

使用单个文件解压缩存档,并重命名输出以匹配存档名称

来自分类Dev

Zip :: ZipFile:如何在不解压缩zip的情况下修改内部文本文件的内容?

来自分类Dev

Zip :: ZipFile:如何在不解压缩zip的情况下修改内部文本文件的内容?

来自分类Dev

如何使用C#解压缩MSZIP文件?

来自分类Dev

如何使用Ant解压缩和复制特定文件

来自分类Dev

如何使用终端解压缩.tgz文件?

来自分类Dev

如何使用Scala解压缩zip文件?

来自分类Dev

如何使用PHP解压缩xml文件

来自分类Dev

如何使用nodejs上传zip文件并解压缩?

来自分类Dev

如何使用python解压缩文件

来自分类Dev

如何使用终端解压缩.tgz文件?

来自分类Dev

如何使用cmd解压缩文件?