我收到一个 TGZ 文件,其中包含一个纯文本文件以及一个或多个嵌套的 TGZ 文件。我已经弄清楚如何解压主 TGZ 文件并读取其中包含的纯文本文件,但我无法弄清楚如何识别和解压嵌套的 TGZ 文件。有没有人遇到过这个问题?
此外,我无法控制收到的文件,因此我无法更改包含嵌套 TGZ 文件的 TGZ 文件的格式。另一个警告(尽管我认为这并不重要)是这些文件在 Unix 或 Linux 环境中被压缩和压缩。
提前感谢您的帮助。
我收到一个 TGZ 文件,其中包含一个纯文本文件以及一个或多个嵌套的 TGZ 文件。我已经弄清楚如何解压主 TGZ 文件并读取其中包含的纯文本文件,但我无法弄清楚如何识别和解压嵌套的 TGZ 文件。有没有人遇到过这个问题?
此外,我无法控制收到的文件,因此我无法更改包含嵌套 TGZ 文件的 TGZ 文件的格式。另一个警告(尽管我认为这并不重要)是这些文件在 Unix 或 Linux 环境中被压缩和压缩。
提前感谢您的帮助。
试试 SharpZipLib ( http://www.icharpcode.net/OpenSource/SharpZipLib/Download.aspx ) 免费库。
它让您可以使用 TGZ 并在尝试膨胀文件之前测试文件的方法;因此您可以依赖正确的文件扩展名,或者单独测试它们以查看是否可以将它们作为压缩文件读取 - 然后在主文件解压缩后对它们进行膨胀。
要从 .NET 读取和写入 .tar 和 .tgz(或 .tar.gz )文件,您可以使用这个单文件 tar 类:
http://cheesoexamples.codeplex.com/SourceControl/changeset/view/97756#1868643
非常简单的用法。要创建档案:
string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tar", filenames);
创建一个压缩 (gzip'd) tar 存档:
string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tgz", filenames, TarOptions.Compress);
阅读 tar 存档:
var entries = Ionic.Tar.List("archive.tar"); // also handles .tgz files
提取 tar 存档中的所有条目:
var entries = Ionic.Tar.Extract("archive.tar"); // also handles .tgz files
看看CodePlex 上的DotNetZip。
“如果您只想要一个更好的 DeflateStream 或 GZipStream 类来替换 .NET BCL 中内置的类,那么这里也是如此。DotNetZip 的 DeflateStream 和 GZipStream 可在独立程序集中使用,基于 .NET 端口Zlib。这些流支持压缩级别并提供比内置类更好的性能。还有一个 ZlibStream 来完成集合(RFC 1950、1951、1952)。
看来您可以遍历压缩文件并将单个文件拉出存档。然后,您可以测试您解压缩的文件,看看它们是否本身就是 GZip 文件。
这是他们的示例页面的片段
using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
foreach (ZipEntry e in zip)
{
e.Extract(OutputStream);
}
}
基思