【发布时间】:2010-10-24 14:49:21
【问题描述】:
我正在尝试以编程方式解压缩压缩文件。
我尝试在 .NET 中使用 System.IO.Compression.GZipStream 类,但是当我的应用程序运行(实际上是单元测试)时,我得到了这个异常:
System.IO.InvalidDataException:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。
我现在意识到.zip 文件与.gz 文件不同,GZip 与Zip 不同。
但是,由于我可以通过手动双击压缩文件然后单击“提取所有文件”按钮来提取文件,因此我认为也应该有一种方法可以在代码中执行此操作。
因此,我尝试使用带有压缩文件路径的Process.Start() 作为输入。这会导致我的应用程序打开一个窗口,显示压缩文件中的内容。这一切都很好,但是该应用程序将安装在一个没有周围的服务器上单击“提取所有文件”按钮。
那么,我如何让我的应用程序提取压缩文件中的文件?
或者有其他方法吗?我更喜欢用代码来做,不下载任何第三方库或应用程序;安全部门对此不太感兴趣......
【问题讨论】:
-
您的安全部门更愿意为某事编写自己的代码,而不是使用经过调试并被很多人关注的库?您可以使用库并“在代码中执行”(获取源代码并自己编译),但我认为重新发明轮子比使用久经考验的库所带来的任何安全问题更大。
-
@Jared - 当管理层在头脑中产生想法时......
-
如果您获得第三方产品,安全部门的风险会更小。只需下载 dotnetzip 并将其重命名为“[插入公司名称].ziplibrary.dll”