Мне надо взять файл с архива поставить в другую папку и назвать как архив, как мне это сделать
Я смог взять файл из архива, с помощью плагина, если что вот код разархивации:
private void Zip(string zipPath, string extractPath)
{
extractPath = System.IO.Path.GetFullPath(extractPath);
// Гарантирует, что последний символ на пути извлечения
// - символ-разделитель каталогов.
// Без этого вредоносный zip-файл может попытаться пройти за пределы ожидаемого
// путь извлечения.
if (!extractPath.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
extractPath += System.IO.Path.DirectorySeparatorChar;
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith(".eps", StringComparison.OrdinalIgnoreCase))
{
// Получает полный путь, чтобы гарантировать удаление относительных сегментов.
string destinationPath = System.IO.Path.GetFullPath(System.IO.Path.Combine(extractPath, entry.FullName));
// Порядковое соответствие является наиболее безопасным, тома с учетом регистра могут быть смонтированы в томах, которые
// нечувствительны к регистру.
if (destinationPath.StartsWith(extractPath, StringComparison.Ordinal))
entry.ExtractToFile(destinationPath);
}
}
}
}
но мне надо потом этот разархивированный файл переименовать и назвать как название архива, я попробовал:
private void MainMethod()
{
string[] pathInIconsFolder = Directory.GetFiles(IconsPath.Text); // Папка с архивами файлов
string[] testPathFolder = Directory.GetFiles(@"D:\testPath\");//Временная, тестовая папка
string testPath = @"D:\testPath"; //Временная, тестовая папка
string pathInIcons = IconsPath.Text; // Папка с архивами иконок
string savePathInIcons = SaveIconsPath.Text; //Папка где будут сохраняю файлы
int c = 0;
for (int i = 0; i < pathInIconsFolder.Length; i++)
{
//Разархивирование и перемещения файла в тестовую папку
Zip(pathInIconsFolder[i], testPath);
Thread.Sleep(150);
if (i == pathInIconsFolder.Length) //Проверка на то что все файлы из pathInIconsFolder перемещаются в тестовую папку testPath
{
DirectoryInfo dir = new DirectoryInfo(pathInIcons);
foreach (FileInfo file in dir.GetFiles()) // Получаю имена файлов из папки с архивами
{
string fileName = file.Name; // Создаю переменную с именем архива
File.Move(testPathFolder[c], savePathInIcons + fileName); // Перемещаю все файлы с тестовой папки на нужную папку и за одно переименовываю файл в имя архива
c++;
//Проверяю что все файлы закончились и выхожу из цикла
if (c == i)
break;
}
}
}
}
Как я понимаю программа должна работать, но она только перемещает файлы из архива в тестовую папку.
Надеюсь все понятно объяснил.
Буду благодарен если вы мне поможете