我有一个压缩文件.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一样,我尝试了很多库,但仍然没有任何准确的解决方案。
请帮我。
嗨,panoskarajohn,我想在问题所列档案中的文件上进行此操作,您有什么建议吗?
—
Nikunj Satasiya
抱歉,我对此没有干净的解决方案,我相信您可以
—
panoskarajohn
the rename
在Extract()之后执行zip
。
是的,我想重命名压缩存档中的文件而不提取存档,存档格式可以是.rar .7z,.tar或.zip。
—
Nikunj Satasiya
在大多数格式中,即使不是全部,文件和目录名称也会在生成的二进制文件中以可变大小进行编码,因此您不能仅对其进行“修补”,而必须重构文件的某些部分。标准库不这样做。您必须进入每种存档格式,然后看看如何做到。困难的任务。例如:stackoverflow.com/questions/32829839/...
—
西蒙Mourier
var result = Path.ChangeExtension(myffile, ".jpg");
-> docs.microsoft.com/en-us/dotnet/api/…–