最近因为项目需要,要求通过.Net将数据文件压缩为 .tar.gz格式。
目前很多压缩都是通过工具实现的。下面介绍如何通过SharpZipLib实现该功能。
分别引用以下两个命名空间,CompressTarFile函数部分为关键代码,其余的就不赘述。
using System;
using ICSharpCode.SharpZipLib.Tar;
using ICSharpCode.SharpZipLib.GZip;
private void CompressTarFile()
{
string fileName = "F:\\test.tar.gz";//压缩后的文件名
Stream outStream;
outStream = File.OpenWrite(fileName);
outStream = new GZipOutputStream(outStream);
TarArchive archive = TarArchive.CreateOutputTarArchive(outStream, TarBuffer.DefaultBlockFactor);
String[] files = Directory.GetFiles("F:\\TarGz\\");
foreach (String name in files)
{
TarEntry entry = TarEntry.CreateEntryFromFile(name);
archive.WriteEntry(entry, true);
}
if (archive != null)
{
archive.CloseArchive();
}
}