TAR.GZ アーカイブを C# でマージする
Contents
[
Hide
Show
]任意の数の Tar.gz アーカイブを 1 つのアーカイブに結合したい場合は、この記事を読んでください。
説明
Aspose.ZIP API は、圧縮の有無にかかわらず、Tar アーカイブを抽出および作成するための TarArchive クラスを提供します。 アーカイブを中間ストレージに保存せずにメモリに抽出し、そのエントリを結合された Tar アーカイブにすぐに渡すことができます。
すべてのエントリの内容を保持するのに十分な仮想メモリがあることを確認してください。
エントリを転送
次のコード例は、複数の Tar.gz アーカイブからエントリを抽出し、それを直ちに tar アーカイブに配置する方法を示しています。 SaveGzipped メソッドを使用してメモリ内の gz に圧縮します。
1 string[] archivesPaths = new string[] { "data/first.tar.gz",
2 "data/second.tar.gz", "data/third.tar.gz" };
3 TarArchive[] archives = new TarArchive[archivesPaths.Length];
4
5 using (TarArchive mergred = new TarArchive())
6 {
7 for (int i = 0; i < archivesPaths.Length; i++)
8 {
9 TarArchive a = TarArchive.FromGZip(archivesPaths[i]);
10 archives[i] = a;
11 foreach (TarEntry entry in a.Entries)
12 mergred.CreateEntry(entry.Name, entry.Open());
13 }
14
15 mergred.SaveGzipped("merged.tar.gz");
16
17 for (int i = 0; i < archivesPaths.Length; i++)
18 {
19 archives[i].Dispose();
20 }
21 }
他のアーカイブに対する同様のアプローチ
同じアプローチを使用して、tar.lz、tar.xz、tar.z を組み合わせることができます。