我想阅读其他进程打开(并锁定?)的文件内容。
我尝试使用File.ReadAllText()
和new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read))
但两种方法都会触发IOException。
例如,我可以使用Notepad ++打开文件并显示内容,所以我认为使用c#也一定可以。
答案 0 :(得分:4)
您需要使用带有FileShare
参数的FileStream构造函数重载。并通过FileShare.ReadWrite
。如果您允许写访问权限,则只能打开该文件,因为其他程序已获得该权限。否则,到目前为止尝试失败的原因是,他们使用了FileShare.Read。无法工作,你不能拒绝写访问,因为其他程序已经得到了。
在您阅读文档时处理写入文件的程序完全取决于您。结果可能是随机的。一切皆有可能,但一般来说,对于一个日志文件,你会得到一个部分写入的最后一行,它落后于程序的实际输出,其中一些仍然在程序的文件缓冲区中。缓冲区大小为4096字节是常见的选择。