我们在C#中有静态类Logger
,其中日志文件在应用程序启动时初始化。在每个 512字节之后,日志文件将回滚(创建新日志文件)。现在问题是,我无法在外部打开当前日志文件,因为它已在我的应用程序中打开。
我无法理解如何处理这个问题。如何打开当前打开的日志文件,同时不应该损害当前的文件操作。
感谢。
答案 0 :(得分:1)
在您的情况下,使用FileShare.ReadWrite
至关重要。这应该是你的诀窍:
using (FileStream stream = File.Open("filePath", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
using (StreamReader reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
// do your stuff here
}
}
}
答案 1 :(得分:1)
为了给您准确的答案,我需要查看记录器的代码。但我会解释这个想法。让我们说记录器使用System.IO.File.Open()
方法创建/打开日志文件进行写入。使用Open()
方法的重载,该方法允许您指定FileShare
参数(here is the link)并为该参数指定FileShare.Read
。这将允许应用程序以只读模式打开日志文件,因此不会损害日志记录操作。