【发布时间】:2015-02-16 05:21:12
【问题描述】:
我查看了许多标题相似的帖子及其建议的答案。但是他们还没有解决我的问题。例如this、this 和this。
我有一个始终被 Windows 服务锁定的文本文件(它基本上是一个记录器)。我想要做的是在我的程序中从这个文件中读取,并且还能够清空它的内容。
我们是否有不包括复制文件的有效解决方案?
到目前为止,这是我用于读取文件的代码,当然它目前无法正常工作。
serviceLogs = new List<string>();
try
{
//Lock Exclusively the file
using (FileStream fileStream = new FileStream(Globals.serviceLogFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader sr = new StreamReader(fileStream))
{
String line;
while ((line = sr.ReadLine()) != null)
serviceLogs.Add(line);
}
}
【问题讨论】:
-
可以修改服务吗?
-
为什么要打开同一个文件两次?一次使用
File.Open(不使用结果)一次通过FileStream构造函数? -
@CodesInChaos 是的,我自己编写了服务的更好部分。我可以停止服务,从文件中读取并编辑它,然后重新启动它,但这是一个非常糟糕的主意。由于我的服务有更重要的事情要做以停止自身,因此用户读取其日志文件。
-
@CodesInChaos 哦,是的。抱歉,我将删除该行。
-
我的意思是,您需要在服务和程序上都使用适当的共享标志。您需要修改服务,以便它打开允许程序读写访问的文件。
标签: c# io text-files streamreader