[英]FileStream/StreamWriter if another user has the file open
当用户提交信息时,我正在将数据写入日志文件。 办公室中的其他用户可能需要查看此日志文件,但是如果办公室用户打开了文件,则由于提交了更多信息,因此我无法继续写入日志文件。 即使另一个用户打开了文件实例,有没有办法继续写入文件?
using(StreamWriter writer = new StreamWriter(@"\\filelocation\filename.csv"))
{
writer.WriteLine("Testing, testing");
writer.Close();
}
如果您需要继续创建日志文件,我建议您使用跟踪吗? 您可以像这样将“侦听器”附加到跟踪。
Trace.Listeners.Add(new TextWriterTraceListener("myfilename.txt"));
当然,如果将其传递给文件名,它将不会自动刷新,并且在文件关闭或缓冲区填满之前,文件中将没有任何内容。 因此,您可以在程序开始时创建流。
FileInfo fi = new FileInfo("myLogFile.txt");
StreamWriter _sw;
void Main()
{
_sw = fi.CreateText();
_sw.AutoFlush = true;
Trace.Listeners.Add(new TextWriterTraceListener(sw));
}
void Close()
{
if(_sw != null)
{
_sw.Flush();
_sw.Dispose();
}
}
然后,在您的程序中,您无需执行每次为写入“日志”而打开和关闭文件的操作,而只需执行此操作即可。
Trace.WriteLine("My message here");
跟踪也有一个很酷的东西,叫做类别,这对于日志来说非常有用...
Trace.WriteLine("My message here", "INFO");
//Output:
//INFO: My message here
我发现的一件事是,在某些系统上,您无法打开文本文件,但可以将其复制以打开,并且原始文件将继续填充。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.