Fusion des archives TAR.GZ en C#
Si vous souhaitez combiner un nombre arbitraire d’archives Tar.gz en une seule archive, lisez cet article.
Description
L’API Aspose.ZIP fournit la classe TarArchive pour extraire et composer des archives Tar, avec ou sans compression. Nous pouvons extraire une archive en mémoire sans la sauvegarder dans un stockage intermédiaire et transmettre immédiatement ses entrées à l’archive Tar combinée.
Assurez-vous de disposer de suffisamment de mémoire virtuelle pour conserver le contenu de toutes les entrées.
Transférer une entrée
L’exemple de code suivant montre comment extraire les entrées de plusieurs archives Tar.gz et les placer immédiatement dans l’archive tar. Nous le compressons en gz en mémoire en utilisant la méthode SaveGzipped.
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 }
Approche similaire pour d’autres archives
Vous pouvez utiliser la même approche pour combiner tar.lz, tar.xz, tar.z.