尝试使用 SSH.NET 提取从 SFTP 服务器下载的 ZIP 文件后得到 "it is being used by another process"

Getting "it is being used by another process" after trying to extract a ZIP file downloaded from SFTP server using SSH.NET

我想解压缩文件时遇到问题。

从 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);
    }
}

下载后不要关闭文件。

下载代码应该是这样的:

using (var file = File.OpenWrite(fileName))
{
    sftp.DownloadFile(fileName, file);
}