检查文件是否正在使用

本文关键字:文件 是否 检查 | 更新日期: 2023-09-27 18:09:36

大家好,我需要一些帮助。我试图在服务器上打开一个文本文件从多个客户端在同一时间,所以我没有锁定文件时,从它读取。这样的:

new StreamReader(File.Open(logFilePath, 
                       FileMode.Open, 
                       FileAccess.Read, 
                       FileShare.ReadWrite))

现在我想检查这个文件是否被任何客户端使用(因为我想写一些新的东西给它),但是因为我在读取它时没有锁定它,我不知道如何做到这一点。我不能尝试打开并捕获异常,因为它会打开

检查文件是否正在使用

你可以试试吗?

或者看看这里已经问过的问题->是否有一种方法来检查文件是否正在使用?

protected virtual bool IsFileLocked(FileInfo file)
{
    FileStream stream = null;
    try
    {
        stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
    }
    catch (IOException)
    {
        //the file is unavailable because it is:
        //still being written to
        //or being processed by another thread
        //or does not exist (has already been processed)
        return true;
    }
    finally
    {
        if (stream != null)
            stream.Close();
    }
    //file is not locked
    return false;
}

我不能尝试打开并捕获异常,因为它会打开

为什么?以这种方式工作是一个有价值的选择。

顺便说一下,你也可以创建一个空的预定义文件,比如"access "。等,以便了解实际文件是否被锁定,检查锁定文件是否存在:
if(File.Exist("access.lock")) 
  //locked 
else
  //write something