Tengo un archivo comprimido .rar .7z, .tar y .zip y quiero cambiar el nombre del archivo físico disponible en el archivo comprimido anterior usando C #.
He intentado esto usando una biblioteca sharpcompress pero no puedo encontrar una función para cambiar el nombre del archivo o carpeta dentro de los archivos .rar .7z, .tar y .zip.
También he intentado usar la biblioteca DotNetZip pero es su único soporte. Vea lo que he intentado usando la biblioteca 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());
}
}
Pero en realidad lo mismo que el anterior también quiero para .7z, .rar y .tar, probé muchas bibliotecas pero aún no obtuve ninguna solución precisa.
Por favor, ayúdame.
var result = Path.ChangeExtension(myffile, ".jpg");
-> docs.microsoft.com/en-us/dotnet/api/…the rename
después de Extract () comozip
.Respuestas:
Esta es una aplicación de consola simple para renombrar archivos en .zip
fuente
Considere 7zipsharp:
https://www.nuget.org/packages/SevenZipSharp.Net45/
7zip en sí es compatible con muchos formatos de archivo (creo que todo lo que mencionó) y 7zipsharp usa el 7zip real. He usado 7zipsharp solo para archivos .7z pero apuesto a que funciona para otros.
Aquí hay una muestra de una prueba que parece cambiar el nombre de un archivo usando el método ModifyArchive, te sugiero que vayas a la escuela:
https://github.com/squid-box/SevenZipSharp/blob/f2bee350e997b0f4b1258dff520f36409198f006/SevenZip.Tests/SevenZipCompressorTests.cs
Aquí está el código simplificado un poco. Tenga en cuenta que la prueba comprime un archivo 7z para su prueba; eso es irrelevante, podría ser .txt, etc. También tenga en cuenta que encuentra el archivo por índice en el diccionario pasado a ModifyArchive. Consulte la documentación sobre cómo obtener ese índice de un nombre de archivo (tal vez tenga que hacer un bucle y comparar).
fuente