4

1 つのプレーン テキスト ファイルと 1 つ以上のネストされた TGZ ファイルを含む TGZ ファイルを受け取りました。メインの TGZ ファイルを解凍してそこに含まれるプレーン テキスト ファイルを読み取る方法はわかりましたが、ネストされた TGZ ファイルを認識して解凍する方法はわかりませんでした。誰もこの問題に遭遇したことがありますか?

また、受け取ったファイルを制御できないため、ネストされた TGZ ファイルを含む TGZ ファイルの形式を変更できません。もう 1 つの注意点 (重要ではないと思いますが) は、これらのファイルが Unix または Linux 環境で圧縮および tar されていることです。

助けてくれてありがとう。

4

3 に答える 3

5

SharpZipLib ( http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx ) 無料ライブラリを試してください。

TGZ を操作でき、ファイルを膨張させる前にテストする方法があります。そのため、ファイル拡張子が正しいことに依存するか、個別にテストして圧縮ファイルとして読み取れるかどうかを確認し、メイン ファイルが解凍されたら膨張させます。

于 2009-11-18T14:03:50.123 に答える
4

.NET から .tar および .tgz (または .tar.gz ) ファイルを読み書きするには、次の 1 ファイルの tar クラスを使用できます。

http://cheesoexamples.codeplex.com/SourceControl/changeset/view/97756#1868643

非常にシンプルな使い方。アーカイブを作成するには:

string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tar", filenames);

圧縮 (gzip された) tar アーカイブを作成します。

string[] filenames = { ... };
Ionic.Tar.CreateArchive("archive.tgz", filenames, TarOptions.Compress);

tar アーカイブを読む:

var entries = Ionic.Tar.List("archive.tar");  // also handles .tgz files

tar アーカイブ内のすべてのエントリを抽出します。

var entries = Ionic.Tar.Extract("archive.tar");  // also handles .tgz files
于 2010-04-06T20:54:13.940 に答える
1

CodePlex のDotNetZipを見てください。

「.NET BCL に組み込まれているものを置き換える、より優れた DeflateStream または GZipStream クラスだけが必要な場合は、それもここにあります。DotNetZip の DeflateStream と GZipStream は、.NET ポートに基づくスタンドアロン アセンブリで利用できます。 Zlib. これらのストリームは圧縮レベルをサポートし、組み込みクラスよりもはるかに優れたパフォーマンスを提供します. セットを完成させる ZlibStream もあります (RFC 1950, 1951, 1952)."

圧縮ファイルを反復処理して、個々のファイルをアーカイブから引き出すことができるようです。次に、解凍​​したファイルをテストして、それらのファイル自体が GZip ファイルであるかどうかを確認できます。

ここに彼らのサンプルページからの抜粋があります

using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
  foreach (ZipEntry e in zip)
  {
    e.Extract(OutputStream);
  }
}

キース

于 2009-11-18T19:19:06.850 に答える