我有一个文本文件,这只是他格式的一小部分:
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中,我有一个List:List Histograms
我需要做的是读取文本文件,在这种情况下文本文件名是Histograms.txt来读取文本文件,每行/帧有256个数字我需要添加回List。 因此,列表直方图最终将在索引[0]中,例如i [...]中的[0] 5977中的[0] 5977,[2] 174395 [3] 305955 [4] 265805中的[0] 5977中有256个索引。所以256个数字。
然后在索引1再次256个数字...... 然后在索引[2]等等......
最后我应该在List 3803索引中,每个索引都有256个索引,每个索引都包含一个数字。
这是当我使用数字时我如何编写文本文件的代码,然后当我再次运行程序时,我需要它将读取并将文本文件加载回List。当我运行程序时,列表为空。
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(),我需要读取文本文件并将数字添加回List。
我现在添加了List的照片,将它写入文本文件时的样式以及List从文本文件中读回后的样子。
答案 0 :(得分: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);
}
}
快乐编码......