@MonkAlex
C#, SQL, Delphi, C++ etc

Теряются файлы при упаковке, где искать причину?

Имеется простой код упаковки файлов в архив, с использованием стандартного System.IO.Compression с 4.5 дотнета:
var directories = new DirectoryInfo(folder);
var files = directories
  .GetFiles("*", SearchOption.TopDirectoryOnly)
  .Select(f => f.FullName);
foreach (var file in files)
{
  var fileName = file
    .Replace(directories.FullName + Path.DirectorySeparatorChar, string.Empty)
    .Replace(directories.FullName, string.Empty);
  var fileInZip = zip.Entries.FirstOrDefault(f => f.FullName == fileName);
  if (fileInZip != null)
    fileInZip.Delete();
  zip.CreateEntryFromFile(file, fileName, CompressionLevel.NoCompression);
}


В чем собственно проблема - иногда файлы не попадают в архив. Файлы, которые уже там имелись, при этом остаются.

Возможно, я просто неправильно написал добавление файлов в архив, тогда хотелось бы узнать, как это лучше делать.
  • Вопрос задан
  • 2332 просмотра
Пригласить эксперта
Ответы на вопрос 1
Neuroware
@Neuroware
Программист в свободное от работы время
похоже что проблема тут
var fileInZip = zip.Entries.FirstOrDefault(f => f.FullName == fileName);
 if (fileInZip != null)
 fileInZip.Delete();

тут идет поиск первого элемента, но чисто теоретически элемент может быть не один, если упаковано не совсем правильно. в таком случае будет удаление первого и попытка создать новую запись, которая скорее всего либо не отработает либо отработает создав 2 записи на 1 файл (путь)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы