如何知道另一个进程是否正在使用文件夹?

时间:2011-06-27 10:36:04

标签: c# .net io filesystems

我知道已经有几十个关于“另一个进程正在使用的文件”的问题。但它们都有尝试读取文件或写入已被其他进程使用的文件的问题。我只是想检查另一个进程是否正在使用某个文件(之后没有IO操作)。 我没有在其他地方找到答案。 那么,我怎么知道C#中的另一个进程是否正在使用文件或文件夹?

2 个答案:

答案 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)

这篇文章可能有所帮助:

How to check for file lock?