我这样做是为了创建文件并保存到它:
w = new StreamWriter(_outputDir + "\\" + averagesListTextFileDirectory + "\\" + averagesListTextFile + ".txt", false, Encoding.ASCII);
w.WriteLine("DANNY VIDEO META DATA\r\nFORMAT VERSION:1.00\r\nSOURCE: " + "<" + averagesListTextFile + ">" + "\r\nDATA: ");
for (int i = 0; i < averages.Count; i++)
{
w.WriteLine(averages[i]);
}
w.WriteLine("DATA");
w.Close();
但是现在我想保存到文件中,每个索引中的List中的值都有另一个值数组。像:
[0] 123 33 44 55 66 ...
[1] 33 44 565 66 ...
在每个索引中有256个值。
我希望文本文件在DATA之后看起来像那样: 下一行将是:
第1帧:123 33 44 55 66
第2帧:33 44 565 66
所以每一行都有256个值。
此格式。
现在文件的格式如下:
DANNY VIDEO META DATA
格式版本:1.00
消息来源:
数据:
15.1199916409607
13.7612831147295
13.746730806327
13.2768227559145
现在我希望在读取List中的值时,格式将如下:
DANNY VIDEO META DATA
格式版本:1.00
消息来源:
数据:第1帧:123 33 44 55 66
第2帧:33 44 565 66
问题是如何阅读列表,每个索引包含256个值,如何将其写入文本文件?
这就是我试图这样做的方式:
private void WriteHistograms() // For automatic mode only for now
{
HistogramsFile = new StreamWriter(_outputDir + "\\" + averagesListTextFileDirectory + "\\" + "Histograms.txt", false, Encoding.ASCII);
HistogramsFile.WriteLine("DANNY VIDEO META DATA\r\nFORMAT VERSION:1.00\r\nSOURCE: " + "<" + averagesListTextFile + ">" + "\r\nDATA: ");
foreach (long[] array in Histograms)
{
foreach (long value in array)
{
frameNumber++;
HistogramsFile.WriteLine("Frame Number " + frameNumber + " : " + value);
}
}
HistogramsFile.WriteLine("DATA");
HistogramsFile.Close();
结果是25MB的文件大小!以下是文本文件格式的示例:
DANNY VIDEO META DATA
FORMAT VERSION:1.00
SOURCE: <MVI_2483.AVI_Automatic>
DATA:
Frame Number 1 : 5977
Frame Number 2 : 40775
Frame Number 3 : 174395
Frame Number 4 : 305855
Frame Number 5 : 265805
Frame Number 6 : 212232
Frame Number 7 : 153333
Frame Number 8 : 99743
Frame Number 9 : 62334
Frame Number 10 : 41018
Frame Number 11 : 27381
Frame Number 12 : 21403
Frame Number 13 : 18324
最后我看到帧号:
Frame Number 973822 : 666
Frame Number 973823 : 1118
Frame Number 973824 : 0
现在确定为什么最后一个是0以及为什么973824帧,而实际上只有大约3800帧。
那么文件大小是逻辑25MB?格式我希望它是:
第1帧:33 44 55 66 77 88 ......(此行中有256个值) 帧号2:22 33 12 3 44 55 .......(此行中有256个值)
等等。
列表直方图是每个索引中的类型,每个索引中有256个索引:
[0]有:[1] 23 [2] 22 [3] 44等 [1]有:[1] 12 [2] 13 [3] 21等等
那么什么错?
答案 0 :(得分:1)
您需要在原始循环中使用嵌套for循环:
foreach(long[] array in averages)
{
foreach(long value in array)
{
w.WriteLine(value);
}
}
这将允许您遍历数组列表。通常,对于大多数二维数据结构,您将遵循此类型的循环。
编辑:如果要在单独的行上打印出每个数组,则需要按如下方式修改循环:
int frameNumber = 1;
foreach(long[] array in averages)
{
w.WriteLine("Frame Number " + frameNumber + " : ");
frameNumber++;
foreach(long value in array)
{
w.Write(value).Write(' ');
}
}
这将产生以下结果:
Frame Number 1 : 10 15235 198 65439 24098...
Frame Number 2 : 10232 135 45619 895649 4598...
...
Frame Number N : 987 651 654 968498 21654...