DotNetZip как удалить файл после распаковки - PullRequest
0 голосов
/ 28 февраля 2019

Я обнаружил проблему в своем проекте.В настоящее время я использую библиотеку DotNetZip для распаковки zip-файлов.Кроме того, мне нужно удалить ZIP-файл после извлечения его содержимого.Однако я не могу сделать это (как вручную, так и с помощью File.Delete (...)), потому что папка открыта в моей программе.Итак, я думаю, что эта проблема вызвана процессом извлечения файлов. «Подозрительная» часть кода:

string localFileName = @ "... path ....";

            string remoteDir = "/SFTPfolder/";

            using (var sftp = new SftpClient(SFTPHost, SFTPUsername, SFTPPassword))
            {
                sftp.Connect();

                var files = sftp.ListDirectory(remoteDir);



                foreach (var x in files)
                {
                    if (!x.Name.StartsWith("."))
                    {
                        Console.WriteLine(x.Name.ToString());

                        string rfn = x.Name;

                        using (Stream st1 = File.OpenWrite(localFileName + rfn))
                        {

                            sftp.DownloadFile(remoteDir + rfn, st1);
                        }
                    }
                }

            }

            UnzipFiles();
            File.Delete(@"BLA\BLA1\BLA2\ZIPFILE.zip");

ГдеUnzipFiles:

public static void UnzipFiles()
    {

        string zipFilePath = @"BLA\BLA1\BLA2\ZIPFILE.zip";
        string extractedFilepath = @"BLA\BLA1\BLA2";

        ZipFile zipfile = ZipFile.Read(zipFilePath);
        if (!Directory.Exists(extractedFilepath))
        {
            Directory.CreateDirectory(extractedFilepath);
        }

        foreach (ZipEntry e in zipfile)
        {
            e.Extract(extractedFilepath, ExtractExistingFileAction.OverwriteSilently);
        }

    }

Итак, мой вопрос: как сделать этот файл "бесплатным"?(Чтобы его удалить)

...