2011-04-18 55 views
0

我有一个包含多个压缩.gz文件的.tar文件。我没有问题通过.tar文件创建目标目录中的每个.gz文件。我想跳过将.gz全部写在一起,然后从TarEntry/TarArchive中解压缩它?并通过.Net原生GZipStream实时写入其内容。甚至不知道这是可能的。SharpZipLib:从.tar文件内部解压.gz文件?

这是我写的每个g'zipped文件的当前代码。不知道要修改哪些内容才能获得我需要的位置。

 using (FileStream _fsIn = new FileStream(@"F:\data\abc.tar", FileMode.Open, FileAccess.Read)) 
     { 
      using (TarInputStream _tarIn = new TarInputStream(_fsIn)) 
      { 
       TarEntry _tarEntry; 

       while ((_tarEntry = _tarIn.GetNextEntry()) != null) 
       { 
        string _archiveName = _tarEntry.Name; 

        using (FileStream _outStr = new FileStream(@"F:\data\" + _archiveName, FileMode.Create)) 
        { 
         _tarIn.CopyEntryContents(_outStr); 
        } 
       } 
      } 
     } 
+0

让我加... abc.tar中包含的gz文件大小为1-5GB。 – BeerGuy 2011-04-21 17:20:37

回答

0

我不确定你想要做什么。也许你可以澄清你的目标。这个sharpzlib没有那么好记录,因为我预计会这样。

我已经迭代了一个tar归档文件,并将文件的内容推送到一个新的Stream中,也许你可以使用它作为一个起点。看看this StackOverflow Article

+0

让我尝试重新解释场景。我有一个tar文件:abc.tar。它包含多个gzip文件:1.gz,2.gz,3.gz等。我没有任何问题通过abc.tar进行整理并写出所有包含在其中的gz文件。我想放弃编写gz文件,并在通过abc.tar循环时解压缩它。 – BeerGuy 2011-04-21 17:17:44

+0

我会从您提供的文章中尝试以下代码。由于淫秽的gz文件大小,这可能不太适合。 MemoryStream out_stream = new MemoryStream(); tar.CopyEntryContents(out_stream); – BeerGuy 2011-04-21 17:24:54