如何读取已在使用的文本文件(Windows C ++)

时间:2014-08-07 07:36:05

标签: c++ visual-studio-2012 file-io windows-7 share

我有一个应用程序使用std::ofstream使用std::ofstream::app创建文本日志文件来创建文本日志文件。这个应用程序经常写日志,有时只相隔几毫秒。

我想编写第二个应用程序,在第一个应用程序仍在写入时,读入并分析此日志文件

我有一些工作代码,使用ifstream,加载&处理一个独立的文本日志文件,但当我尝试在当前正在使用&#34写入的文本日志文件上使用它时,此代码失败;该进程无法访问该文件,因为它正由另一个进程使用。&# 34;

如何调整我的日志阅读器以允许我读取当前正在写入的文本文件(Notepad ++能够对同一文件执行哪些操作!)?

1 个答案:

答案 0 :(得分:3)

在Windows上,您可以将第三个参数传递给流构造函数/ open以允许共享,例如

std::ofstream of("path", of.app, _SH_DENYNO);
默认情况下会传递

(int)ios_base::_Openprotenum设置为_OPENPROT,而_SH_DENYNO又定义为{{1}},因此它应该已经可以在不指定标志的情况下工作我不确定为什么它不适合你,你试过按照VS中的定义或调试代码吗?

参考:

http://msdn.microsoft.com/en-us/library/y1et11xw(v=vs.110).aspx

http://msdn.microsoft.com/en-us/library/kexhtshc(v=vs.110).aspx