我在用户提交信息时将数据写入日志文件。办公室内的其他用户可能需要查看此日志文件,但如果办公室用户打开文件,则无法继续写入日志文件,因为提交的更多信息。有没有办法继续写入文件,即使另一个用户打开了该文件的实例?
using(StreamWriter writer = new StreamWriter(@"\\filelocation\filename.csv"))
{
writer.WriteLine("Testing, testing");
writer.Close();
}
答案 0 :(得分:0)
如果您需要继续创建日志文件,我建议您使用Trace吗?您可以像这样将“监听器”附加到Trace。
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有一个很酷的东西叫做类别,这对于日志来说很棒......
Trace.WriteLine("My message here", "INFO");
//Output:
//INFO: My message here
我发现有一件事是在某些系统上你无法打开文本文件,但你可以打开它的副本,原始文件将继续填充。