我想从一个可以被其他人修改的文件中读取。我可以轻松打开读取流并在每次修改时使用FileSystemWatcher
重新读取流吗?或者每次修改时都必须重新打开文件流?
答案 0 :(得分:1)
您没有说明如何修改文件。如果可以完全重写,甚至设置为0字节,那么当然每次都需要重新读取它。
此外,如果您为响应FileSystemWatcher
事件而这样做,您可能会发现它仍在使用中,并获得IO异常。
要解决这个问题,您可能需要睡眠并重试几次(这很糟糕),或者您需要在修改文件的过程中使用某种同步机制。
但是,如果您知道其他进程只会附加到该文件,您可以只读取附加的数据 - 但是您不能轻易地保持流打开,因为一旦为流设置EOF标志,它将保持设置(AFAIAA)。相反,你可以记下最后读取的长度,这样你就知道从哪里开始阅读。