测试文件的可访问性

Der*_*rek 1 c# file

避免像

(1)进程无法访问该文件,因为它被另一个进程使用

在进行任何进一步处理之前,我使用以下方法测试文件的可访问性.

private bool CheckIfFileBeingUsed(string FilePath)
    {
        FileStream Fs = null;
        try
        {
            Fs = File.Open(FilePath, FileMode.Open, FileAccess.Read, FileShare.None);
            Fs.Close();
        }
        catch (Exception)
        {
            return true; //Error File is being used
        }
        return false; //File is not being used.
    }
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我有任何Windows API或其他解决方案来测试文件可访问性而不是上面的File.Open方法吗?

dle*_*lev 6

看起来你在这里重复努力.因为尝试打开文件进行处理会抛出你在这里捕获的相同异常,为什么不继续尝试处理文件,并在出现异常时处理异常?

假设由于某种原因这是不可能的,这样的测试仍然不完全可靠,因为你现在有一个竞争条件.即使此测试通过,也无法保证当您在文件上运行其他代码时文件将处于相同状态.这就是为什么更容易尝试做你想做的事情,并在那时处理任何例外.