Rob*_*ser 16 .net c# windows streaming filestream
在C#/ .NET(在Windows上)有没有办法使用文件流读取"增长"文件?打开文件流时文件的长度将非常小,但该文件将由另一个线程写入.如果/当文件流"赶上"到另一个线程时(即Read()
返回0字节读取时),我想暂停以允许文件缓冲一点,然后继续读取.
我真的不想使用a FilesystemWatcher
并继续创建新的文件流(如日志文件所建议的那样),因为这不是一个日志文件(它是一个即时编码的视频文件),性能是个问题.
谢谢,
罗伯特
这与围绕文件的 StreamReader 一起使用,步骤如下:
在写入文件的程序中,使用读共享打开它,如下所示:
var out = new StreamWriter(File.Open("logFile.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read));
Run Code Online (Sandbox Code Playgroud)在读取文件的程序中,以读写共享的方式打开,像这样:
using (FileStream fileStream = File.Open("logFile.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using ( var file = new StreamReader(fileStream))
Run Code Online (Sandbox Code Playgroud)在访问输入流之前,请检查是否已到达末尾,如果已到达,请稍等片刻。
while (file.EndOfStream)
{
Thread.Sleep(5);
}
Run Code Online (Sandbox Code Playgroud)