Check if file is in use
本问题已经有最佳答案,请猛点这里访问。
嗨,伙计们,我需要帮助。我试图同时从多个客户机打开一个服务器上的文本文件,这样在读取时就不会锁定该文件。这样地:
1 2 3 4 |
现在我正试图检查这个文件是否被任何客户机使用(因为我想给它写些新的东西),但是因为我在读取它时没有锁定它,所以我不知道该怎么做。我无法尝试打开并捕获异常,因为它将打开。
你能试试这个吗?
或者看这里已经问过这个问题->有没有办法检查文件是否在使用中?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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; } |
I can't try to open and catch an exception because it will open
为什么?以这种方式工作是很有价值的选择。
另外,您还可以创建一些空的预定义文件,例如"access.lock",以及其他文件,以便了解实际文件是否被锁定。请检查是否存在锁定文件:
1 2 3 4 | if(File.Exist("access.lock")) //locked else //write something |