Nouvelles Du Monde

Nouveau dans .NET 7.0 [21]: Tarballs compressés

Nouveau dans .NET 7.0 [21]: Tarballs compressés

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)

Vers la page d’accueil



#Nouveau #dans #.NET #Tarballs #compressés
1688774006

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ADVERTISEMENT