.NET 7.0'da yeni [21]: Sıkıştırılmış katran

Womanne

Member
Bu .NET 7.0 serisinin önceki kısmı. System.Formats.Tar Üretebilir ve çözebilir. TAR arşivi standartta sıkıştırılmamıştır, ancak GZIO gibi sıkıştırma işlemleri ile birleştirilebilir.










Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.








Aşağıdaki kod, ayrı dosyalardan sıkıştırılmış bir katran 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();
}

}



Sıkıştırılmış bir katran da kullanabilirsiniz ExtractToDirectory() Ayrışma:



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



Ayrıca bazı dosyaları ayrı ayrı çıkarabilirsiniz:





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




(RME)
 
Üst