【发布时间】:2020-04-14 11:23:52
【问题描述】:
我有一个压缩文件 .rar .7z、.tar 和 .zip,我想重命名上述使用 C# 压缩归档的物理文件名。
我已经尝试过使用Sharpcompress 库,但我在.rar .7z、.tar 和.zip 文件中找不到这样的重命名文件或文件夹名称的功能。
我也尝试过使用 DotNetZip 库,但它只支持。Zip 看看我使用 DotNetZip 库尝试过什么。
private static void RenameZipEntries(string file)
{
try
{
int renameCount = 0;
using (ZipFile zip2 = ZipFile.Read(file))
{
foreach (ZipEntry e in zip2.ToList())
{
if (!e.IsDirectory)
{
if (e.FileName.EndsWith(".txt"))
{
var newname = e.FileName.Split('.')[0] + "_new." + e.FileName.Split('.')[1];
e.FileName = newname;
e.Comment = "renamed";
zip2.Save();
renameCount++;
}
}
}
zip2.Comment = String.Format("This archive has been modified. {0} files have been renamed.", renameCount);
zip2.Save();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
但实际上和上面一样我也想要.7z、.rar和.tar,我尝试了很多库,但仍然没有得到任何准确的解决方案。
请帮帮我。
【问题讨论】:
-
有一个
var result = Path.ChangeExtension(myffile, ".jpg");-> docs.microsoft.com/en-us/dotnet/api/… -
嗨 panoskarajohn,我想在问题上列出的存档中执行此操作,您有什么解决方案可以建议吗?
-
对不起,我没有一个干净的解决方案,我相信你可以在 Extract() 之后做
the renamezip。 -
是的,我想重命名压缩存档中的文件而不提取存档,并且存档格式可以是任何 .rar .7z、.tar 或 .zip。
-
在大多数格式中,如果不是全部,文件和目录名称在生成的二进制文件中以可变大小进行编码,因此您不能只是“修补”它,您必须重建部分文件。标准库不这样做。您必须了解每种存档格式并了解如何做到这一点。困难的任务。示例:stackoverflow.com/questions/32829839/…