检查文件是否正在使用
本文关键字:文件 是否 检查 | 更新日期: 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