我在PowerShell中使用压缩代码,我需要在C#中创建相同的方法,但我遇到的问题是我没有扩展名的压缩文件,所以我不知道它是.zip .tar还是.tgz
powershell代码如下:
Expand-Archive -Path $compressedFile.FullName -OutputPath $workDir -ShowProgress
那你能帮我用C#实现吗?
答案 0 :(得分:2)
有关检测压缩格式的信息,请参阅:Detecting Compression Formats
您可以确定它可能是其中一种格式 看着前几个字节。然后你应该测试一下 真的是其中之一,使用相关的完整性检查 该格式的实用程序,或实际进行解压缩。
您可以在说明中找到标题格式:
Zip(.zip)格式描述,以0x50,0x4b,0x03,0x04开头 (除非为空 - 然后最后两个是0x05,0x06或0x06,0x06)Gzip (.gz)格式描述,以0x1f,0x8b,0x08 xz(.xz)格式开头 描述,以0xfd,0x37,0x7a,0x58,0x5a,0x00开头其他:
zlib(.zz)格式描述,以(以位为单位)0aaa1000开头 bbbccccc,其中选择ccccc使第一个字节乘以256加 第二个字节是31的倍数.compress(.Z)以0x1f开头, 0x9d bzip2(.bz2)以0x42,0x5a,0x68
开头
要在C#中解压缩文件,请参阅:Uncompressing Files in .NET
我们在许多项目中成功使用了SharpZipLib。我知道它是一个 第三方工具,但包含源代码,可以提供一些 如果您选择在这里重新发明轮子,那就有洞察力。
上述链接有一些不同的答案可能会根据您的需求提供更好的途径。