【发布时间】:2020-05-27 16:49:34
【问题描述】:
我正在尝试编写一个自动从特定文件夹中删除文件的 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 { }
}
}
}
那么如何跳过删除正在使用的文件?
【问题讨论】:
-
这能回答你的问题吗? Is there a way to check if a file is in use?
-
通过@CameronTinker 的链接,似乎你真正应该做的就是在你的try/finally 中添加一个
catch块。捕获特定的异常类型 (IOException?) 并继续前进似乎是您最好的选择。 -
服务是否以用户“ASIM”的身份运行?该服务是否有权删除 ASIM 的临时文件?
-
是的,没有使用的文件会被删除。这与权限无关。