Chr*_*fer 45 c# file-io file-locking
我正在监视由服务器程序写入的文本文件.每次更改文件时,内容都将输出到我的程序中的窗口.
问题是我无法使用Streamreader
文件used by another process
.建立一个Filestream
与ReadWrite
将没有任何好处,因为我无法控制所使用的文件的过程.
我可以在记事本中打开文件.即使服务器正在使用它,也必须能够访问它.
这有什么好办法吗?
我应该做以下事情吗?
每当服务器更改文件时,我都需要在文件中获取文本.
Han*_*ant 99
如果记事本可以读取文件那么你也可以,显然程序没有对文件进行读锁定.您遇到的问题是StreamReader将使用FileShare.Read打开该文件.哪个否认写入权限.这不起作用,另一个程序已经获得了写访问权限.
您需要像这样创建StreamReader:
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs, Encoding.Default)) {
// read the stream
//...
}
Run Code Online (Sandbox Code Playgroud)
在这里猜测编码.你必须小心这种代码,另一个程序正在积极地写入文件.你不会得到一个非常可靠的文件结束指示,很可能获得部分最后一行.当你继续阅读文件以试图获得附加的程序时,尤其麻烦.
SLa*_*aks 14
呼叫
File.Open(path, FileMode.Read, FileAccess.Read, FileShare.ReadWrite)
Run Code Online (Sandbox Code Playgroud)
只要其他应用程序没有专门锁定文件,这应该可以工作.
归档时间: |
|
查看次数: |
51233 次 |
最近记录: |