2013-05-17 64 views
0

我試圖從文本文件中讀取像素的值並生成一個圖像文件。但首先我想確保我可以讀取文件中的所有值。我使用這個代碼,但輸出會丟失輸入文件中的一些整數 - 最後一個。我不知道爲什麼!你可以幫我嗎?這裏是代碼:從c#中的文本文件中讀取整數並將它們寫入數組

namespace txtToImg 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      TextWriter tw = new StreamWriter("D:\\out.txt"); 
      string fileContent = File.ReadAllText("D:\\in.txt"); 

      string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

      int[] integers = new int[integerStrings.Length]; 
      //tw.Write(integerStrings.Length); 

      for (int n = 0; n < integerStrings.Length; n++) 
      { 
       integers[n] = int.Parse(integerStrings[n]); 

       tw.Write(integers[n]+" "); 


      } 
     } 
    } 
} 
+2

我注意到StreamWriter對象不會出現被越來越封閉。不知道這是否會有所作爲,但它是我能看到的唯一明顯的事情。 – Andrew

+0

你確定不應該是'fileContent.Split(new char [] {'','\ n'},...'? –

+0

我的整數被空格分開,我不需要'\ n'或','。謝謝,雖然! – fanciulla

回答

2

我同意安德魯的評論你的streamWriter對象沒有被關閉,所以有一件事我會試試這個。我在下面進行了更改,並嘗試了你正在做的和我的輸出文件包含所有條目。

using (TextWriter tw = new StreamWriter(@"D:\out.txt")) 
     { 
      string fileContent = File.ReadAllText(@"D:\in.txt"); 

      string[] integerStrings = fileContent.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

      int[] integers = new int[integerStrings.Length]; 

      for (int n = 0; n < integerStrings.Length; n++) 
      { 
       integers[n] = int.Parse(integerStrings[n]); 
       tw.Write(integers[n] + " "); 
      } 
     } 
+0

是的,這也很棒!謝謝,熊貓! – fanciulla

+0

很高興它解決了您的問題! – Bearcat9425

+0

安娜如果這個答案已經解決了你的問題,不要忘記選擇它作爲你的問題的答案 – Mehran

0

對,我剛跑了,正如我懷疑你需要你的循環後,執行以下操作:

tw.Close(); 
+0

像安德魯建議我會包裝你的TextWriter在使用聲明。它實現了IDiposable,所以在關閉大括號之後妥善處理,然後您的出文件被釋放並可供其他進程訪問。 – Bearcat9425

相關問題