我知道已经有几十个关于“另一个进程正在使用的文件”的问题。但它们都有尝试读取文件或写入已被其他进程使用的文件的问题。我只是想检查另一个进程是否正在使用某个文件(之后没有IO操作)。 我没有在其他地方找到答案。 那么,我怎么知道C#中的另一个进程是否正在使用文件或文件夹?
答案 0 :(得分:4)
正如您在问题中描述的那样,唯一的方法是首先尝试打开文件以查看是否由其他进程使用。
你可以使用我之前实现的这个方法,想法是如果文件存在然后尝试打开文件作为开放写入,所以如果失败那么该文件可能被另一个进程使用:
public static bool IsFileInUse(string fileFullPath, bool throwIfNotExists)
{
if (System.IO.File.Exists(fileFullPath))
{
try
{
//if this does not throw exception then the file is not use by another program
using (FileStream fileStream = File.OpenWrite(fileFullPath))
{
if (fileStream == null)
return true;
}
return false;
}
catch
{
return true;
}
}
else if (!throwIfNotExists)
{
return true;
}
else
{
throw new FileNotFoundException("Specified path is not exsists", fileFullPath);
}
}
答案 1 :(得分:2)
这篇文章可能有所帮助: