Получение «он используется другим процессом» после попытки извлечь ZIP-файл, загруженный с SFTP-сервера, используя S SH. NET - PullRequest
0 голосов
/ 17 марта 2020

У меня возникла проблема, когда я хочу разархивировать файл.

После загрузки файла из SFTP я хочу разархивировать его, но он всегда говорит мне, что он используется другим процессом.

Я хочу найти вопрос в Google, но, похоже, ни у кого нет этого вопроса.

Может кто-нибудь научить меня, как его решить? Большое спасибо.

bool result = false;
string zipFile = "";

using (SftpClient sftp = new SftpClient(ip, user, pw))
{
    sftp.Connect();
    var sftpFiles = GetFileList("/", sftp);
    zipFile = GetZipFile(sftpFiles);
    if (zipFile != null)
    {
        var file = File.OpenWrite(fileName);
        sftp.DownloadFile(fileName,file);
        result = true;
        sftp.Disconnect();
    }
}
if (result)
{
    using (ZipFile zipList = ZipFile.Read(fileName))
    {
        ZipEntry zipFile = zipList[fileName];
        zipFile.Extract("/", ExtractExistingFileAction.OverwriteSilently);
    }
}

1 Ответ

0 голосов
/ 17 марта 2020

Вы не закрываете файл после загрузки.

Код загрузки должен выглядеть следующим образом:

using (var file = File.OpenWrite(fileName))
{
    sftp.DownloadFile(fileName, file);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...