仅使用 C#/.NET 重命名 .Zip 条目?
Renaming a .Zip entry using only C# / .NET?
所以我现在要做的是打开一个 .Zip 文件并重命名其中的一个文件 (.NET 4.6.1)。我不认为我被允许使用第三方库,因为这是一个非常简单的操作(或者我认为,因为我找不到任何 MSDN 函数来重命名条目)。
我找到了几种方法,但它们都很讨厌。您可以将文件提取到磁盘并使用不同的名称再次添加,或者您也可以在 zip 中使用新名称创建一个新条目,通过流复制文件,然后删除原始条目。
有什么有效的方法吗?在这一点上我不介意任何想法。我知道 DotNetZip 只有一行,但我不能使用第三方库。
非常感谢您的帮助!
使用 System.IO.Compression
中的 ZipArchive
。这是一个向指定 zip 文件中的每个条目添加 .dat
扩展名的示例:
private static void RenameZipEntries(string file)
{
using (var archive = new ZipArchive(File.Open(file, FileMode.Open, FileAccess.ReadWrite), ZipArchiveMode.Update))
{
var entries = archive.Entries.ToArray();
foreach (var entry in entries)
{
var newEntry = archive.CreateEntry(entry.Name + ".dat");
using (var a = entry.Open())
using (var b = newEntry.Open())
a.CopyTo(b);
entry.Delete();
}
}
}
所以我现在要做的是打开一个 .Zip 文件并重命名其中的一个文件 (.NET 4.6.1)。我不认为我被允许使用第三方库,因为这是一个非常简单的操作(或者我认为,因为我找不到任何 MSDN 函数来重命名条目)。
我找到了几种方法,但它们都很讨厌。您可以将文件提取到磁盘并使用不同的名称再次添加,或者您也可以在 zip 中使用新名称创建一个新条目,通过流复制文件,然后删除原始条目。
有什么有效的方法吗?在这一点上我不介意任何想法。我知道 DotNetZip 只有一行,但我不能使用第三方库。
非常感谢您的帮助!
使用 System.IO.Compression
中的 ZipArchive
。这是一个向指定 zip 文件中的每个条目添加 .dat
扩展名的示例:
private static void RenameZipEntries(string file)
{
using (var archive = new ZipArchive(File.Open(file, FileMode.Open, FileAccess.ReadWrite), ZipArchiveMode.Update))
{
var entries = archive.Entries.ToArray();
foreach (var entry in entries)
{
var newEntry = archive.CreateEntry(entry.Name + ".dat");
using (var a = entry.Open())
using (var b = newEntry.Open())
a.CopyTo(b);
entry.Delete();
}
}
}