[英]Read a file that is locked (?) by a other process
我想读取由其他进程打开(和锁定?)的文件的内容。 我尝试使用File.ReadAllText()
和new StreamReader(new FileStream(path, FileMode.Open, FileAccess.Read))
但是这两种方法都触发IOException。
例如,我可以使用Notepad ++打开文件,并显示内容,因此我认为使用c#也必须可行。
您需要使用带有FileShare
参数的FileStream构造函数重载。 并传递FileShare.ReadWrite
。 只有在您允许写访问权限的情况下,您才能打开该文件,因为其他程序已经获得了该权限。 否则,到目前为止您尝试失败的原因,他们使用了FileShare.Read。 无法工作,您不能拒绝写访问,因为其他程序已经获得了写访问。
在读取文件时处理写入文件的程序完全取决于您。 结果可能是相当随机的。 一切皆有可能,但通常对于日志文件,您会得到部分编写的最后一行,该行位于程序的实际输出之后,其中某些仍在程序的文件缓冲区中。 通常选择4096字节的缓冲区大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.