C#如何在不提取文件的情况下从bzip2(.bz2)文件获取文件/复制文件

时间:2015-06-09 08:13:23

标签: c# copy compression bzip2 sharpziplib

我有一个.bz2压缩文件,我想将内部文件复制到另一个位置,而不是解压缩它。 我使用.net 4.5和C#。

我试过这样,但这是针对zip文件(.zip):

using (var zip = ZipFile.Read(_targetPathComplete + "\\" + file[0].ToUpper() + "_" + file[1].ToUpper() + ".bz2"))
{
    Stream s = zip[file[0].ToUpper() + "_" + file[1].ToUpper()].OpenReader();
    // fiddle with stream here

    using (var fileStream = File.Create(_targetPathComplete + "\\" + file[0].ToUpper() + "_" + file[1].ToUpper() + ".HDC"))
    {
        s.Seek(0, SeekOrigin.Begin);
        s.CopyTo(fileStream);
    }
}

或使用bzip2算法压缩文件并向其提供扩展名.HDC。

1 个答案:

答案 0 :(得分:0)

我想我解决了这个问题,至少我知道这个方法的文件与我从winrar复制文件时的文件相同。

var fname = _targetPathComplete + "\\" + file[0].ToUpper() + "_" + file[1].ToUpper() + ".bz2";
using (var fs = File.OpenRead(fname))
{
    using (var decompressor = new Ionic.BZip2.BZip2InputStream(fs))
    {
        var outFname = _targetPathComplete + "\\" + file[0].ToUpper() + "_" + file[1].ToUpper() + ".HDC";
        using (var output = File.Create(outFname))
        {
            var buffer = new byte[2048];
            int n;
            while ((n = decompressor.Read(buffer, 0, buffer.Length)) > 0)
            {
                output.Write(buffer, 0, n);
            }
        }
    }
}
相关问题