2011-04-18 85 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