我正在进行一个项目,需要处理一些.taz压缩文件。有没有一种方法可以在C#dotnet核心中解压缩和提取这些文件?
谢谢!
我通过使用UNIX命令行"gunzip"找到了一个解决方法
gunzip myfilename.taz
gunzip适用于具有以下扩展名的文件:.gz、-gz、.z、-z、_z或。Z(还将特殊扩展.tgz和.taz分别识别为.tar.gz和.tar.Z的短手。(
为了运行这个过程,我编写了以下代码:
public string ExtractFileFromTaz (string tazFilePath)
{
var process = new Process()
{
StartInfo = new ProcessStartInfo
{
FileName = "gunzip",
Arguments = tazFilePath,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
}
};
process.Start();
string result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return result;
}
生成的输出是扩展名为.tar的文件,它替换了同一目录中的原始.taz文件。
tar。Z是一个归档文件,可以在UNIXcompress
实用程序的帮助下创建。它的文件被压缩成tarball(.tar(,然后使用现在相当过时的80年代压缩算法LZW进行进一步压缩。
您可以在流行的SharpZipLib库的帮助下提取这些包。
下面是一个如何打开TAZ文件,然后将其中包含的TAR文件写入磁盘的示例。当然,如果TAR文件的大小可以完整地保存在内存中,那么您可以立即提取内存中的TAR文件。
using (var inputStream = File.Open(PATH_TO_TARZ_FILE, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (var tazStream = new LzwInputStream(inputStream))
{
using (var outputStream = PATH_TO_OUTPUT_TAR_FILE, 4096))
{
tazStream.CopyTo(outputStream);
}
}
}