大家好我需要一些帮助。我正在尝试同时从多个客户端打开servern上的文本文件,因此我在读取文件时不会锁定该文件。像这样:
new StreamReader(File.Open(logFilePath,
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite))
现在我正在尝试检查这个文件是否被任何客户端使用(因为我想写一些新的东西),但是因为我在阅读它时没有锁定它我不知道如何去做这个。我无法尝试打开并捕获异常,因为它会打开。
答案 0 :(得分:3)
你可以尝试一下吗?
或者在此处查看此问题 - > Is there a way to check if a file is in use?
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;
}
答案 1 :(得分:2)
我无法尝试打开并捕获异常,因为它会打开
为什么?以这种方式工作是一个有价值的选择。
顺便说一下,您还可以创建一个空的预定义文件,比如“access.lock”和其他文件,以便了解实际文件是否被锁定检查锁定文件是否存在:< / p>
if(File.Exist("access.lock"))
//locked
else
//write something