0

我有一个文本文件,这是他的一小部分格式:

DANNY VIDEO HISTOGRAM DATA
FORMAT VERSION:1.00
SOURCE: <MVI_2483.AVI_Automatic>
DATA: 
Frame 000000: 5977,40775,174395,305855,265805
Frame 000001: 5432,21333,456789,123456,111111

现在每一行框架......有 256 个数字 5977,40775,174395,305855,265805 在示例中,我在这里只显示 5 个数字,但每行/框架有 256 个数字。

在 Form1 我有一个列表:列出直方图

在这种情况下,我需要做的是读取文本文件,文本文件名是 Histograms.txt 来读取文本文件,并且每行/帧都有 256 个数字,我需要添加回列表。因此,列表直方图最终将在索引 [0] 中,例如,我将在 [0] 5977 in 1 40775 in [2] 174395 in [3] 305955 in [4] 265805 中拥有 256 个索引,依此类推 256 个数字.

然后在索引1中再次 256 个数字...然后在索引 [2] 中,依此类推...

最后,我应该在 List 3803 索引中拥有每个索引在 256 索引内,每个索引都包含一个数字。

这是当列表带有数字时我如何编写文本文件的代码,然后当我再次运行程序时,我需要它将读取文本文件并将其加载回列表。当我运行程序时,列表为空。

private void WriteHistograms() // For automatic mode only for now
{
    HistogramsFile = new StreamWriter(_outputDir + "\\" + averagesListTextFileDirectory + "\\"  + "Histograms.txt", false, Encoding.ASCII);
    HistogramsFile.WriteLine("DANNY VIDEO HISTOGRAM DATA\r\nFORMAT VERSION:1.00\r\nSOURCE: " + "<" + averagesListTextFile + ">" + "\r\nDATA: ");
    for (int i = 0; i < Histograms.Count; i++)
    {
        HistogramsFile.Write("Frame " + i.ToString("D6") + ": ");
        for (int x = 0; x < Histograms[i].Length; x++ )
        {
            HistogramsFile.Write(Histograms[i][x] + ",");
        }
        HistogramsFile.WriteLine("!");
    }
    HistogramsFile.WriteLine("DATA");
    HistogramsFile.Close();
}

现在我有另一个函数:LoadHistograms(),我需要读取文本文件并将数字添加回列表。

我现在添加了一张列表的照片,它在将其写入文本文件时是怎样的,以及在从文本文件中读回列表后应该是什么样子。

在此处输入图像描述

4

1 回答 1

0

通过使用这段代码,您可以很好地了解如何完成它。

string line;
List<long[]> list = new List<long[]>();

using (StreamReader file = new StreamReader(@"..\..\Histograms.txt"))
{
    do { line = file.ReadLine(); } while (!line.Trim().Equals("DATA:"));                               

    while ((line = file.ReadLine()) != null)
    {
        long[] valArray = new long[256];

        var split = line.Split(new char[] { ':' });
        if (split.Length == 2)
        {
            var valArrayStr = split[1].Split(new char[] { ',' });
            for (int i = 0; i < valArrayStr.Length; i++)
            {
                int result;
                if (int.TryParse(valArrayStr[i].Trim(), out result))
                    valArray[i] = result;
            }
        }
        list.Add(valArray);
    }
}

快乐的编码...

于 2012-10-06T04:12:55.800 回答