Zip 文件使用 dontnetzip

本文关键字:dontnetzip 文件 Zip | 更新日期: 2023-09-27 18:37:01

我想通过将一些文件添加到zip文件中来替换它们。我的意思是创建 zip 后,我应该不再在文件夹中看到这些文件。

我可以使用dotNetZip的库压缩文件。但是原始文件仍然存在。由于我已经压缩了它们,因此我不再希望它们在该文件夹中。

尝试删除它们(使用file.delete),但是我收到一个错误,即这些文件正被程序使用。

这是我写的://编辑

var files = directory.GetFiles("*.csv", SearchOption.AllDirectories);
            try
            {
                using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())
                {
                    foreach (var file in files)
                    {

                        sendEmail.SendMailMessage(file.FullName);

           //           zip.AddFile(file.FullName);

                    }

    //    zip.Save(Path.Combine(filePath,dirDate, "logs.zip"));

                }
                foreach (var file in files)
                {
                    File.Delete(file.FullName);
                }
            }

            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }


        }

这可能很愚蠢,但我真的被困住了。请指导。

我得到的错误是:

System.IO.IOException: The process cannot access the file 'D:'***.csv' because it is being used by another process.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalDelete(String path, Boolean checkHost)
   at System.IO.File.Delete(String path)
   at Program.Main(String[] args) in d:'Documents''**

Zip 文件使用 dontnetzip

在您的代码中,您没有使用任何File.Delete()方法 - 请始终提供创建错误的代码。

但是,您很可能只是在尝试删除using块中的文件。当您将文件添加到zip文件时,它们将被访问和锁定,因此您无法删除他。释放ZipFile对象后,文件也将释放。

var files = directory.GetFiles("*.csv", SearchOption.AllDirectories);
using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile())
{
    foreach (var file in files)
    {
        zip.AddFile(file.FullName);
    }
    zip.Save(Path.Combine(filePath, dirDate, "logs.zip"));
}
// Outside of using block
foreach (var file in files)
{
    File.Delete(file.FullName);
}