C# TAR
最后修改于 2023 年 7 月 5 日
C# TAR 教程展示了如何在 C# 语言中使用 TAR 归档文件
TAR 归档
tar(磁带归档)文件是文件的归档。 它是 Unix 系统上常见的檔案格式。 tar 将文件打包在一起,用于备份或分发。 TAR 文件不压缩。
.NET 包含使用 System.Formats.Tar
命名空间处理 TAR 文件的工具。
C# TarFile.CreateFromDirectory
TarFile.CreateFromDirectory
创建一个 tar 文件,其中包含指定目录中的所有文件。
$ ls data words.txt words2.txt
我们在 data 目录中有两个文本文件。
Program.cs
using System.Formats.Tar; try { TarFile.CreateFromDirectory("data", "words.tar", false); } catch (IOException e) { Console.WriteLine("failed to create archive"); Console.WriteLine($"{e.Message}"); }
该程序从 data 目录中的文件创建一个新的 tar 归档。
TarFile.CreateFromDirectory("data", "words.tar", false);
第一个参数是我们要从中获取文件的目录。 第二个是归档名称。 最后一个参数确定我们是否将基本目录名称作为归档条目中所有名称的第一个路径段包含在内。
C# TarFile.ExtractToDirectory
TarFile.ExtractToDirectory
将 tar 文件的内容提取到指定的目录中。
Program.cs
using System.Formats.Tar; try { TarFile.ExtractToDirectory("words.tar", "data", false); } catch (IOException e) { Console.WriteLine("failed to extraxt archive"); Console.WriteLine($"{e.Message}"); }
在该程序中,我们将 words.tar
文件提取到一个目录中。
C# TarReader
TarReader
从流中读取 tar 归档。
Program.cs
using System.Formats.Tar; using FileStream fs = File.OpenRead("words.tar"); using var tr = new TarReader(fs); TarEntry? entry; while ((entry = tr.GetNextEntry(true)) != null) { Console.WriteLine($"Name: {entry.Name}, Length: {entry.Length}"); }
在该程序中,我们显示提供的 tar 中的文件。
using FileStream fs = File.OpenRead("words.tar"); using var tr = new TarReader(fs);
我们使用 File.OpenRead
打开一个文件流,并创建 TarReader
的新实例。
TarEntry? entry; while ((entry = tr.GetNextEntry(true)) != null) { Console.WriteLine($"Name: {entry.Name}, Length: {entry.Length}"); }
我们使用 GetNextEntry
在 while 循环中遍历 tar 条目。 我们打印文件名及其大小。
$ dotnet run Name: words.txt, Length: 17 Name: words2.txt, Length: 19
在下一个示例中,我们将读取归档文件的内容。
Program.cs
using System.Formats.Tar; using System.Text; using FileStream fs = File.OpenRead("words.tar"); using var tr = new TarReader(fs); TarEntry? entry; while ((entry = tr.GetNextEntry(true)) != null) { using MemoryStream ms = new MemoryStream(); if (entry.DataStream != null) { entry.DataStream.CopyTo(ms); string res = Encoding.UTF8.GetString(ms.ToArray()); Console.WriteLine(res); } }
该程序打开 tar 文件并读取文本文件的内容。
TarEntry? entry; while ((entry = tr.GetNextEntry(true)) != null) { using MemoryStream ms = new MemoryStream(); ... }
我们打开一个新的内存流。
if (entry.DataStream != null) { entry.DataStream.CopyTo(ms); ... }
我们将数据从 tar 条目数据流复制到内存流中。
string res = Encoding.UTF8.GetString(ms.ToArray()); Console.WriteLine(res);
来源
我们将内存流转换为字符串并将其打印到控制台。
在本文中,我们使用 C# 处理了 tar 文件。
作者
列出所有 C# 教程。