一个C ++程序正在填充日志文件,它保留了日志文件的句柄。我想用C#程序打开这个日志文件并解析它以查看某个行是否已添加到日志文件中。
但是,如果我用C#打开日志文件,我会得到一个“这个文件被另一个进程使用”IOException。使用的代码:
using(StreamReader reader = File.OpenRead(myFile))//IOException
C ++程序打开文件(我无法更改C ++程序):
m_hFile = tsopen(m_csFilePath,
_O_WRONLY|_O_APPEND|_O_TRUNC|_O_CREAT|_O_BINARY,
_SH_DENYWR,
_S_IREAD | _S_IWRITE);
用记事本打开文件工作正常,因此应该可以打开它。我可以强制我的C#程序以只读模式打开文件吗?
答案 0 :(得分:8)
也许尝试使用ReadWrite
FileShare
打开文件?
File.Open(myFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
答案 1 :(得分:1)
您可以使用File.Copy
获取日志文件的快照副本,然后尝试打开它。