作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
.NET ZipArchive 是否允许重命名或移动条目?目前无法更改 ZipArchiveEntry 创建后的名称。看来我必须将原始 ZipArchiveEntry 的流复制到名称更改后的新 ZipArchiveEntry。
谢谢马丁
最佳答案
除了重命名条目外,我不知道“移动”是什么意思。即使在常规磁盘文件系统中,“移动”实际上只是重命名文件名的完整路径,而不仅仅是“叶节点”文件名。在 .zip 存档中,这更加明确;存档中的“目录”或“文件夹”仅通过名称中包含该目录名称的条目而存在(当然,由目录分隔符分隔)。所以“移动”与“重命名”完全相同。
至于你是否可以重命名,不......用ZipArchive
,您必须创建一个新条目,它是原始条目的副本,但使用新名称,然后删除原始条目。
执行此操作的代码如下所示:
static void RenameEntry(this ZipArchive archive, string oldName, string newName)
{
ZipArchiveEntry oldEntry = archive.GetEntry(oldName),
newEntry = archive.CreateEntry(newName);
using (Stream oldStream = oldEntry.Open())
using (Stream newStream = newEntry.Open())
{
oldStream.CopyTo(newStream);
}
oldEntry.Delete();
}
作为扩展方法实现,如上,可以这样调用:
ZipArchive archive = ...; open archive in "update" mode
string oldName = ...,
newName = ...; // names initialized as appropriate
archive.RenameEntry(oldName, newName);
关于c# - 压缩包 : Can I rename or move a ZipArchiveEntry?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562092/
我是一名优秀的程序员,十分优秀!