2023-07-07 16:20:00
La partie précédente de cette série .NET 7.0 couvrait les archives tar, qui peuvent maintenant être trouvées dans .NET en utilisant des classes dans l’espace de noms System.Formats.Tar
peut créer et décompresser. Une archive tar n’est pas compressée par défaut, mais peut être combinée avec des méthodes de compression telles que GZip.
Publicité
docteur Holger Schwichtenberg est expert en technologie en chef chez MAXIMAGO, qui propose un développement de logiciels axé sur l’innovation et l’expérience, y compris dans des domaines hautement critiques liés à la sécurité. Il est également à la tête du réseau d’experts www.IT-Visions.de, qui soutient de nombreuses moyennes et grandes entreprises avec des conseils et une formation dans le développement et l’exploitation de logiciels avec 38 experts renommés.
Le code suivant montre comment créer un fichier tar compressé à partir de fichiers individuels :
///
/// GZip-komprimiertes Archiv aus dem Inhalt aus einzelnen Dateien erstellen
///
public static void TARDemo_Compressed()
{
string folder = @"T:Dokumente";
string folder2 = @"T:DokumenteExtrahiert2";
string tarFile = @"T:ArchivKomprimiert.tar.gz";
using (MemoryStream ms = new())
{
using (TarWriter writer = new(ms, TarEntryFormat.Pax, leaveOpen: true))
{
foreach (var file in new System.IO.DirectoryInfo(folder).GetFiles("*.xlsx"))
{
writer.WriteEntry(fileName: file.FullName, entryName: file.Name);
Console.WriteLine(file.FullName);
}
}
using FileStream tarstream = File.Create(tarFile);
using GZipStream compressor = new(tarstream, CompressionMode.Compress);
ms.Seek(0, SeekOrigin.Begin);
ms.CopyTo(compressor);
ms.Close();
compressor.Dispose();
tarstream.Dispose();
}
}
Vous pouvez également utiliser une archive tar compressée ExtractToDirectory()
déballer:
using FileStream compressedStream = File.OpenRead(@"T:ArchivKomprimiert.tar.gz");
using GZipStream decompressor = new(compressedStream, CompressionMode.Decompress);
TarFile.ExtractToDirectory(source: decompressor,
destinationDirectoryName: @"t:DokumenteExtrahiert",
overwriteFiles: true);
Vous pouvez également extraire des fichiers spécifiques individuellement :
Publicité
///
/// Extrahieren nur der XLSX-Dateien aus einem TAR-Archiv
///
public static void TAR_DateienExtrahieren()
{
string folder3 = @"T:DokumenteExtrahiert";
string tar = @"T:ArchivKomprimiert.tar.gz";
using (FileStream fs = File.OpenRead(tar))
{
using GZipStream decompressor = new(fs, CompressionMode.Decompress);
using TarReader reader = new(decompressor, leaveOpen: false);
TarEntry? entry;
int count = 0;
while ((entry = reader.GetNextEntry(copyData: true)) != null)
{
if (entry.Name.EndsWith(".xlsx"))
{
string destFileName = Path.Join(folder3, entry.Name);
Console.WriteLine($"Datei {++count}: {destFileName}");
entry.ExtractToFile(destFileName, overwrite: true);
}
}
}
}
(rme)
#Nouveau #dans #.NET #Tarballs #compressés
1688774006