sundaramoorthy.b Ответов: 2

Несколько файлов папок должны быть ZIP с паролем с помощью C#


Всем привет,

У меня есть несколько папок, и в этих папках много файлов. Мне нужно застегнуть все файлы ZIP-имя должно быть именем папки соответственно с паролем.

Пример: 1. OUTPUT(папка)/NO1/FILES_1(100 файлов) это должно быть ZIP как "FILES_1"
2. OUTPUT(папка)/NO1/FILES_2(100 файлов) это должно быть ZIP как "FILES_2"
3. OUTPUT(папка)/NO1/FILES_3(100 файлов) это должно быть ZIP как "FILES_3"


Заранее спасибо!!!

Что я уже пробовал:

if (textBox2.Text == "")
           {
               MessageBox.Show("select folder to be Zip","Alert");
               return;
           }

           SaveFileDialog saveFileDialog2 = new SaveFileDialog();


           saveFileDialog2.Filter = "zip files (*.zip)|*.zip|rar files (*.rar)|*.rar";
           saveFileDialog2.FilterIndex = 2;

           saveFileDialog2.RestoreDirectory = true;

           if (saveFileDialog2.ShowDialog() == DialogResult.OK)
           {
               //Zip directory including all files
               string filename = textBox1.Text;
               try
               {

                   using (var zip = new ZipFile())
                   {
                       zip.AddDirectory(textBox2.Text,"");
                       zip.Save(saveFileDialog2.FileName.ToString());
                   }
                   MessageBox.Show("Files are Zipped Successfully!", "Alert");
               }
               catch (Exception ex)
               {
                   MessageBox.Show("Error during Zip operation!", "Alert");
               }
               clear();

Maciej Los

А проблема вот в чем....

OriginalGriff

И что же?
Что он делает такого, чего вы не ожидали, или не делает того, что вы сделали?
А что вы пробовали?
Где ты застрял?
Какая помощь вам нужна?

2 Ответов

Рейтинг:
1

Maciej Los

Похоже, ваша проблема заключается в том, как перечислить все подкаталоги...

Проверить это: Каталог.Метод GetDirectories (System.IO) | Microsoft Docs[^]

string inputFolder = @"C:\FullPathHere\NO1\";
string[] dirs = Directory.GetDirectories(inputFolder);
foreach(string dir in dirs)
{
        //get the name of file by passing folder name and extension
        string sFileName = $"{dir}.zip"
        //create zip file from directory
        ZipFile.CreateFromDirectory(dir, sFileName);
}


Если вы хотите создать архивный файл с паролем, то вам нужно использовать класс, который поддерживает пароль. Видеть: c# - создание zip - файла в .net с паролем- переполнение стека[^]


Рейтинг:
0

Maciej Los

Я боюсь, что класс ZipFile не поддерживает функциональность пароля...

Richard MacCutchan

Я знаю, но это, похоже, тот самый, который использует ОП. И мне кажется, что в наши дни почти никто на самом деле не смотрит в документацию, чтобы проверить, какие функции доступны.

Maciej Los

Печально, но факт.