一千萬個為什麽

搜索

如何讀取特定格式的數據

我有一個可以變大的日誌文件。

我的日誌文件中的信息采用某種格式,我希望將它們轉發給單獨的數據塊。

例如,

這是一個開始。

胡說 胡說

胡說 胡說 胡說 胡說 胡說 胡說

胡說

這是一個開始。

胡說 胡說

胡說 胡說 胡說 胡說 胡說 胡說

胡說 胡說 胡說 胡說 胡說 胡說

胡說 胡說 胡說 胡說 胡說 胡說

胡說

我希望從下一個“這是開始”之前的“這是開始”獲取信息。做這個的最好方式是什麽?我的代碼在c#中。

最佳答案

以下代碼將文件拆分為由“這是開始。”行描述的塊,並調用回調方法來處理每個塊:

public static void ProcessInChunks(string inputFilename,
    string delimiter, Action> processChunk)
{
    using (var enumerator = File.ReadLines(inputFilename).GetEnumerator())
    {
        if (!enumerator.MoveNext())
           //The file is empty.
            return;

        var firstLine = enumerator.Current;
        if (firstLine != delimiter)
            throw new InvalidOperationException(
                "Expected the first line to be a delimiter.");

        List currentChunk = new List();

        while (enumerator.MoveNext())
        {
            if (enumerator.Current == delimiter)
            {
                processChunk(currentChunk);
                currentChunk = new List();
            }
            else
                currentChunk.Add(enumerator.Current);
        }
        processChunk(currentChunk);
    }

用法:</強>

ProcessInChunks(@"myfile.log", "This is the start.",
    chunk => { /* do something here */ });

轉載註明原文: 如何讀取特定格式的數據