我必須讀取包含數百萬條記錄的文本文件。在閱讀文件時,我必須實現類似「Tracker」的功能,它會將最後一次讀取的LineNumber寫入日誌文件。我不希望這個日誌文件打開並且寫入操作會影響我的應用程序性能。任何人都可以建議我如何實現它? P.S.我正在使用yield來讀取這個大文件,並且我有這樣的多個文件。我想停止閱讀操作,如果文件有一些無效的記錄...雖然這個閱讀操作正在進行,但我想以某種方式讓最終用戶知道,到目前爲止它已經閱讀了如此之多的行文件閱讀正在進行中。寫入文件讀取操作
using (StreamReader reader = new StreamReader(_fileNameAndPath))
{
while (reader.EndOfStream == false)
{
string data = reader.ReadLine();
_fileLineNumber = _fileLineNumber + 1;
//this line number should go to tracker file Logger.Trace(_fileLineNumber)
//............
}
}
Logger類:
public static class Logger
{
.....
public static void Trace(string message)
{
FileStream fileStream = new FileStream(logFilePath, FileMode.Append);
StreamWriter streamWriter = new StreamWriter(fileStream);
streamWriter.WriteLine(message);
}
}
只要保持流爲整個應用程序或讀取上下文打開。 AKA沒有靜態記錄器 - 注入它 –
這真的是你的'Logger.Trace()'實現嗎?因爲您沒有關閉文件流... –
您需要記錄程序結束時讀取的最後一行的編號,還是需要記錄您閱讀的每一行? – falx