.NET 7.0’daki yenilikler [21]: sıkıştırılmış tarball’lar

Womanne

Member
Bu .NET 7.0 serisinin önceki bölümü, artık ad alanındaki sınıfları kullanarak .NET’te bulunabilen tarball’larla ilgiliydi. System.Formats.Tar oluşturabilir ve sıkıştırabilir. Bir tar arşivi varsayılan olarak sıkıştırılmamış haldedir, ancak GZip gibi sıkıştırma yöntemleriyle birleştirilebilir.

Duyuru








Dr Holger Schwichtenberg, MAXIMAGO’da Güvenlikle ilgili son derece kritik alanlarda bile yenilik ve deneyime dayalı yazılım geliştirme sunan Baş Teknoloji Uzmanıdır. Aynı zamanda, çok sayıda orta ölçekli ve büyük şirketi yazılım geliştirme ve işletim konusunda 38 tanınmış uzmanla danışmanlık ve eğitimle destekleyen uzman ağı www.IT-Visions.de’nin başkanıdır.







Aşağıdaki kod, tek tek dosyalardan sıkıştırılmış bir tar dosyasının nasıl oluşturulacağını gösterir:


/// <summary>
/// GZip-komprimiertes Archiv aus dem Inhalt aus einzelnen Dateien erstellen
/// </summary>
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();
}

}



Ayrıca sıkıştırılmış bir tar arşivi de kullanabilirsiniz. ExtractToDirectory() paketten çıkar:


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);



Belirli dosyaları ayrı ayrı da çıkarabilirsiniz:

Duyuru


/// <summary>
/// Extrahieren nur der XLSX-Dateien aus einem TAR-Archiv
/// </summary>
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);
}
}
}
}




(rm)



Haberin Sonu
 
Üst