Lorsque vous travaillez avec des archives à partir de vos applications .NET, vous devrez peut-être fusionner plusieurs fichiers ZIP ou TAR. Par exemple, vous souhaiterez peut-être extraire des fichiers et des dossiers de plusieurs archives et les placer dans une seule archive. Pour y parvenir, cet article explique comment fusionner plusieurs fichiers ZIP ou TAR en C#. Nous couvrirons la fusion de ZIP en ZIP, de TAR en TAR, de ZIP en TAR et de TAR en ZIP.
- API C# pour fusionner des fichiers ZIP et TAR
- Fusionner plusieurs fichiers ZIP en C#
- Fusionner plusieurs fichiers TAR en C#
- Combiner ZIP avec TAR en C#
- Combiner TAR avec ZIP en C#
API C# .NET pour fusionner les fichiers ZIP et TAR
Pour fusionner plusieurs archives ZIP et TAR, nous utiliserons Aspose.ZIP for .NET. Il s’agit d’une API .NET riche en fonctionnalités qui vous permet de créer et de manipuler divers formats d’archives populaires. Vous pouvez soit télécharger la DLL de l’API, soit l’installer directement à l’aide de NuGet.
PM> Install-Package Aspose.Zip
Fusionner plusieurs fichiers ZIP en C#
Commençons notre voyage de fusion d’archives au format ZIP. Nous allons prendre deux archives ZIP et collecter leurs entrées dans un seul fichier ZIP. Voici les étapes pour fusionner plusieurs fichiers ZIP en C#.
- Chargez le premier fichier ZIP en utilisant la classe Archive.
- De même, chargez le deuxième fichier ZIP à l’aide de la classe Archive.
- Maintenant, parcourez les entrées du premier ZIP en utilisant la collection Archive.Entries.
- Copiez chaque ArchiveEntry dans un objet MemoryStream à l’aide de la méthode ArchiveEntry.Open().CopyTo(MemoryStream).
- Ajoutez une entrée au deuxième ZIP à l’aide de la méthode Archive.CreateEntry(string, MemoryStream).
- Enregistrez le ZIP fusionné dans un fichier séparé à l’aide de la méthode Archive.Save(string).
L’exemple de code suivant montre comment fusionner deux fichiers ZIP en C#.
// Charger l'archive ZIP source
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
// Charger l'archive ZIP de destination
using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Itérer sur les entrées
foreach (ArchiveEntry entry in sourceArchive.Entries)
{
// Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
if (!entry.IsDirectory)
{
// Charger l'entrée dans le flux de mémoire
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Ajouter une entrée au ZIP de destination
destArchive.CreateEntry(entry.Name, mem);
}
}
// Enregistrer l'archive fusionnée séparément
destArchive.Save("Archives/merged-archive.zip");
}
}
Fusionner plusieurs fichiers TAR en C#
Voyons maintenant comment fusionner plusieurs archives TAR en C#. Voici les étapes pour y parvenir.
- Chargez le premier fichier TAR à l’aide de la classe TarArchive.
- De même, chargez le deuxième fichier TAR à l’aide de la classe TarArchive.
- Maintenant, parcourez les entrées du premier TAR en utilisant la collection TarArchive.Entries.
- Copiez chaque TarEntry dans un objet MemoryStream à l’aide de la méthode TarEntry.Open().CopyTo(MemoryStream).
- Ajoutez une entrée au deuxième TAR à l’aide de la méthode TarArchive.CreateEntry(string, MemoryStream).
- Enregistrez le TAR fusionné à l’aide de la méthode TarArchive.Save(string).
L’exemple de code suivant montre comment fusionner plusieurs fichiers TAR en C#.
// Charger l'archive TAR source
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Charger l'archive TAR de destination
using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Itérer sur les entrées
foreach (TarEntry entry in sourceArchive.Entries)
{
// Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
if (!entry.IsDirectory)
{
// Charger l'entrée dans le flux de mémoire
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Ajouter une entrée au TAR de destination
destArchive.CreateEntry(entry.Name, mem);
}
}
// Enregistrer l'archive fusionnée séparément
destArchive.Save("Archives/merged-archive.tar");
}
}
Fusionner ZIP dans TAR en C#
Dans cette section, nous verrons comment fusionner un fichier ZIP dans une archive TAR en C#. Voici les étapes pour effectuer cette opération.
- Chargez le fichier ZIP à l’aide de la classe Archive.
- Charger le fichier TAR en utilisant la classe TarArchive.
- Maintenant, parcourez les entrées de ZIP en utilisant la collection Archive.Entries.
- Copiez chaque ArchiveEntry dans un objet MemoryStream à l’aide de la méthode ArchiveEntry.Open().CopyTo(MemoryStream).
- Ajouter une entrée au TAR à l’aide de la méthode TarArchive.CreateEntry(string, MemoryStream).
- Enregistrez le fichier TAR à l’aide de la méthode TarArchive.Save(string).
L’exemple de code suivant montre comment fusionner une archive ZIP dans TAR.
// Charger l'archive ZIP source
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
// Charger l'archive TAR de destination
using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
{
// Itérer sur les entrées
foreach (ArchiveEntry entry in zipArchive.Entries)
{
// Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
if (!entry.IsDirectory)
{
// Charger l'entrée dans le flux de mémoire
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Ajouter une entrée au TAR de destination
tarArchive.CreateEntry(entry.Name, mem);
}
}
// Enregistrer l'archive fusionnée séparément
tarArchive.Save("Archives/merged-archive.tar");
}
}
Combiner TAR avec ZIP en C#
Comme dans l’exemple précédent, vous pouvez fusionner un fichier TAR en ZIP. L’exemple de code suivant montre comment extraire des fichiers d’un TAR et les fusionner dans un ZIP.
// Charger l'archive TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
// Charger l'archive ZIP
using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
{
// Itérer sur les entrées
foreach (TarEntry entry in tarArchive.Entries)
{
// Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
if (!entry.IsDirectory)
{
// Charger l'entrée dans le flux de mémoire
MemoryStream mem = new MemoryStream();
entry.Open().CopyTo(mem);
// Ajouter une entrée au ZIP
zipArchive.CreateEntry(entry.Name, mem);
}
}
// Enregistrer l'archive fusionnée séparément
zipArchive.Save("Archives/merged-archive.zip");
}
}
Obtenez une licence API gratuite
Vous pouvez utiliser Aspose.ZIP for .NET sans limitation d’évaluation en obtenant une licence temporaire gratuite.
Conclusion
Dans cet article, vous avez appris à fusionner plusieurs archives ZIP ou TAR par programmation en C#. En particulier, nous avons expliqué comment fusionner dynamiquement des fichiers ZIP, des fichiers TAR, ZIP dans TAR et TAR dans ZIP. Pour en savoir plus sur Aspose.ZIP for .NET, vous pouvez consulter la documentation. Vous pouvez également poster vos questions sur notre forum.