Mam skompresowany plik .rar .7z, .tar i .zip i chcę zmienić nazwę fizycznej nazwy pliku dostępnej w powyższym skompresowanym archiwizowanym przy użyciu C #.
Próbowałem tego przy użyciu biblioteki sharpcompress, ale nie mogę znaleźć takiej funkcji zmiany nazwy pliku lub folderu w plikach .rar .7z, .tar i .zip.
Próbowałem również użyć biblioteki DotNetZip, ale jest to jedyne wsparcie. Zobacz, co próbowałem przy użyciu biblioteki 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());
}
}
Ale właściwie to samo co powyżej, chcę również dla .7z, .rar i .tar, próbowałem wielu bibliotek, ale wciąż nie znalazłem żadnego dokładnego rozwiązania.
Proszę pomóż mi.
var result = Path.ChangeExtension(myffile, ".jpg");
-> docs.microsoft.com/en-us/dotnet/api/…the rename
po Extract () aszip
.Odpowiedzi:
Jest to prosta aplikacja konsoli do zmiany nazw plików w .zip
źródło
Rozważ 7zipsharp:
https://www.nuget.org/packages/SevenZipSharp.Net45/
Sam 7zip obsługuje wiele formatów archiwów (uważam, że wszystko, o czym wspomniałeś), a 7zipsharp używa prawdziwego 7zipa. Użyłem 7zipsharp tylko dla plików .7z, ale założę się, że działa dla innych.
Oto próbka testu, który wydaje się zmieniać nazwę pliku przy użyciu metody ModifyArchive, sugeruję pójście do szkoły:
https://github.com/squid-box/SevenZipSharp/blob/f2bee350e997b0f4b1258dff520f36409198f006/SevenZip.Tests/SevenZipCompressorTests.cs
Oto trochę uproszczony kod. Zauważ, że test kompresuje plik 7z do swojego testu; to nie ma znaczenia, może to być .txt itp. Zauważ też, że znajduje plik według indeksu w słowniku przekazanym do ModifyArchive. Zapoznaj się z dokumentacją, jak uzyskać ten indeks z nazwy pliku (być może trzeba zapętlić i porównać).
źródło