С# ZipFile выдает исключения после успешной операции

Я пытаюсь сжать папку изображений (2000 или около того) в ZIP-файл, используя ZipFile в .NET 4.5.2

Следующий код успешно создает ZIP-файл:

static void Main(string[] args)
{
    string startPath= @"D:\Photos";
    string zipPath = @"D:\Photos\all.zip";

    //Same issue with CompressionLevel.Optimal
    ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, false);

    Console.Write("Done! ");
    Console.ReadKey();
}

ZIP-файл создается и заполняется всеми изображениями, но затем метод начинает выдавать исключение, один System.IO.IOException in System.IO.Compression.FileSystem.dll говорит мне, что папка уже используется другим процессом, а затем System.IO.IOException in mscorlib.dll говорит мне, что all.zip уже существует в целевом каталоге, это одного бросают непрерывно, казалось бы, без конца.

Любая помощь будет принята с благодарностью!


person HiSpy    schedule 21.03.2018    source источник
comment
Вероятно, проблема в том, что выходные данные сжатия находятся в той же папке, что и файлы, которые нужно сжать. Функция пытается сжать файл D:\Photos\all.zip, так как в маске файла не указано, что этот файл не должен быть сжат.   -  person Julo    schedule 21.03.2018
comment
Спасибо! я не думал, что это будет проблемой, я изменил целевую папку, и теперь она работает правильно, хотя я бы предпочел использовать ту же папку для изображений и zip.   -  person HiSpy    schedule 21.03.2018
comment
@HiSpy, ты всегда можешь переместить его позже   -  person phuzi    schedule 21.03.2018
comment
@phuzi Вероятно, это то, что я собираюсь сделать, я думаю, моя новизна в работе с файлами проявляется!   -  person HiSpy    schedule 21.03.2018


Ответы (1)


Это работает для меня:

 string startPath = @"E:\testPage";
 string zipPath = @"E:\testPage.zip";

 //Same issue with CompressionLevel.Optimal
 ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, false);

 Console.Write("Done! ");
 Console.ReadKey();

Вы читаете папку и создаете zip-файл по тому же пути, и поэтому вы получаете сообщение об ошибке, что папка уже используется другим процессом.

Измените свой почтовый путь. Тогда он должен работать.

person Praneet Nadkar    schedule 21.03.2018