我正在尝试编写一个windows服务程序,它可以自动从特定的文件夹中删除文件。但我遇到错误“无法访问文件,另一个进程/程序正在使用文件”
我尝试执行以下操作,但仍然出现相同的错误。
string[] files = Directory.GetFiles(@"C:\Users\ASIM\AppData\Local\Temp");
// string[] directories = Directory.GetDirectories(@"C:\Users\ASIM\AppData\Local\Temp", "p*", SearchOption.TopDirectoryOnly);
if (files != null || files.Length != 0)
{
{
foreach (string f in files)
{
try
{
File.Delete(f);
}
finally { }
}
}
}那么如何跳过删除正在使用的文件呢?
发布于 2020-05-28 01:07:43
在删除之前检查文件是否可删除是没有意义的,因为在检查和删除之间会有一个很小的机会窗口,在这个窗口中另一个进程将打开该文件。最好的办法是尝试删除它,并在发生异常时处理它。
您的try/finally应该是try/catch,并带有适当的异常:
try
{
File.Delete(f);
}
catch(IOException ex)
{
// Probably some logging here
}https://stackoverflow.com/questions/62048459
复制相似问题