读取被其他进程锁定(?)的文件
本文关键字:文件 锁定 其他 进程 读取 | 更新日期: 2023-09-27 18:00:48
我想读取由其他进程打开(并锁定?(的文件的内容。我在File.ReadAllText()
和new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read))
中尝试过,但这两个方法都会触发IOException。
例如,我可以用Notepad++打开文件,并显示内容,所以我认为用c#也可以。
您需要使用接受FileShare
参数的FileStream构造函数重载。并通过FileShare.ReadWrite
。您只能在允许写访问的情况下打开文件,因为其他程序已经获得了写访问权限。否则,到目前为止您的尝试失败的原因是,他们使用了FileShare。阅读无法工作,您不能拒绝写入访问权限,因为其他程序已经获得了该权限。
在阅读文件时处理程序写入文件的问题完全取决于您自己。结果可能是随机的。任何事情都有可能,但通常情况下,对于日志文件,您会得到一个部分写入的最后一行,它落后于程序的实际输出,其中一些仍然在程序的文件缓冲区中。4096字节的缓冲区大小是一种常见的选择。