У меня есть сжатый файл .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/...the rename
после Extract () какzip
.Ответы:
Это простое консольное приложение для переименования файлов в .zip
источник
Рассмотрим 7zipsharp:
https://www.nuget.org/packages/SevenZipSharp.Net45/
Сам 7zip поддерживает множество форматов архивов (я полагаю, все, что вы упомянули), а 7zipsharp использует настоящий 7zip. Я использовал 7zipsharp только для файлов .7z, но держу пари, что это работает для других.
Вот пример теста, который, кажется, переименовывает файл, используя метод ModifyArchive, я предлагаю вам пойти в школу в нем:
https://github.com/squid-box/SevenZipSharp/blob/f2bee350e997b0f4b1258dff520f36409198f006/SevenZip.Tests/SevenZipCompressorTests.cs
Вот код немного упростил. Обратите внимание, что тест сжимает файл 7z для своего теста; это неважно, это может быть .txt и т. д. Также обратите внимание, что он находит файл по индексу в словаре, переданном в ModifyArchive. Консультируйтесь с документацией для того, как получить тот индекс от имени файла (возможно, вам придется зацикливаться и сравнивать).
источник