1

某些系统服务使用了一个日志文件。我希望我的程序读取该文件。

如果我使用我System.IO.File.ReadAllText()会收到消息。但是,如果我打电话,我可以将该文件复制到一个临时文件中并读取该临时文件。System.IO.IOExceptionThe process cannot access the file 'X' because it is being used by another process.System.IO.File.Copy()

这有点奇怪。如果我可以复制文件,为什么我不能打开它进行阅读?

是否可以直接读取该文件而不先复制它?

4

2 回答 2

2

这取决于日志文件的创建方式,特别是 FileShare 参数。您可以将其设置为允许读取、写入或无。

FileStream s2 = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read); 

http://msdn.microsoft.com/en-us/library/system.io.fileshare.aspx

于 2012-09-25T13:44:49.413 回答
0

您收到的消息意味着该日志文件是在没有“共享读取”标志的情况下创建/打开的。实际上,只有在该文件的创建者或第一个“打开者”明确允许的情况下,才允许打开已经打开的文件。

要阅读它,您可以像以前那样复制它,或者创建驱动器的 VSS 快照。

于 2012-09-25T13:45:59.700 回答