Невозможно переместить файл после zip.Check () с SevenZipExtractor - PullRequest
0 голосов
/ 18 марта 2020

У меня есть простая проблема: я загружаю файл с FTP-сервера. Если это файл .zip, я пытаюсь разархивировать с помощью SevenZipExtractor. Это мой код:

foreach(FileInfo fi in fileList)
{
    using (SevenZipExtractor zip = new SevenZipExtractor(fi.FullName))
    {
        if (!zip.Check())
        {
            // Se il file ha problemi, lo sposto nella directory dei files corrotti
            filesToMove.Add(fi.FullName);
            Log.ErrorFormat("Error {0}: {1}", fi.Name, "Damaged Zip File");
        }
        else
        {
            zip.ExtractArchive(destPath);
            File.Delete(fi.FullName);
        }
    }
}

foreach (string f in filesToMove)
{
    FileInfo fi = new FileInfo(f);
    fi.MoveTo(Path.Combine(destPath, "ZipCorrotti", fi.Name));
}

Все работает, но если у файла проблемы в zip.Check, я не могу переместить файл. System.Exception : The process cannot access the file because it is being used by another process. Если при отладке я пропускаю zip.Check (прыгаю прямо в предложение if), у меня нет ошибок.

Что я делаю не так?

Спасибо.

...