1

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

4

1 回答 1

1

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

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

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

但是,如果您知道其他进程只附加到文件,您可以只读取附加的数据 - 但您将无法轻松保持流打开,因为一旦为流设置了 EOF 标志,它将保持不变(AFAIAA)。相反,您可以记下上次阅读的长度,以便知道从哪里开始阅读。

于 2013-08-15T10:30:13.603 回答