我想通过将一些文件添加到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\\**
答案 0 :(得分:1)
在您的代码中,您没有使用任何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);
}