读取从外部修改的流

时间:2013-08-15 10:25:02

标签: c# io

我想从一个可以被其他人修改的文件中读取。我可以轻松打开读取流并在每次修改时使用FileSystemWatcher重新读取流吗?或者每次修改时都必须重新打开文件流?

1 个答案:

答案 0 :(得分:1)

您没有说明如何修改文件。如果可以完全重写,甚至设置为0字节,那么当然每次都需要重新读取它。

此外,如果您为响应FileSystemWatcher事件而这样做,您可能会发现它仍在使用中,并获得IO异常。

要解决这个问题,您可能需要睡眠并重试几次(这很糟糕),或者您需要在修改文件的过程中使用某种同步机制。

但是,如果您知道其他进程只会附加到该文件,您可以只读取附加的数据 - 但是您不能轻易地保持流打开,因为一旦为流设置EOF标志,它将保持设置(AFAIAA)。相反,你可以记下最后读取的长度,这样你就知道从哪里开始阅读。