2012-10-05 30 views
-2

林這樣做是爲了創建該文件並保存到它:如何保存文本文件的列表中的值<long>?

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(); 

但現在我想保存到文件在每個索引列表至極值有值的另一個數組。像:

[0] 123 33 44 55 66 ...
[1] 33 44 565 66 ...

在每個索引有256個值。

我想要的文本文件看起來像數據之後: 下一行將會是這樣的:

幀號1:123 33 44 55 66
幀號2:33 44 565 66

所以每行都會有256個值。

這種格式。

現在的文件格式是這樣的:

DANNY視頻元數據
格式版本:1.00
來源:
DATA:
15.1199916409607
13.7612831147295
13.746730806327
13.2768227559145

現在我想打,當我從列表中讀出的值的格式將是這樣的:

DANNY視頻元數據
格式版本:1.00
來源:
DATA:

幀號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

您將需要一個嵌套循環在你原來的一個:

foreach(long[] array in averages) 
{ 

    foreach(long value in array) 
    { 
      w.WriteLine(value); 
    } 
} 

這將允許你遍歷數組的名單。一般來說,對於大多數2維數據結構,您將遵循這種類型的循環。

編輯:如果你想打印出每個陣列在一個單獨的線,你將需要修改循環如下:

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... 
+0

我試過它tkeE2306但即時獲取25MB的文本文件大小,而不是我想要的格式。我會馬上更新我的問題! –

+0

查看我的編輯... youi應該能夠使用它或根據您的需求稍微修改它 –

相關問題