2013-05-13 106 views
1

我正在將輸出寫入此文件,但它在Organized.txt中始終顯示爲空。如果我從sr2.WriteLine更改最後一個foreach循環,並且只使用WriteLine寫入控制檯,那麼輸出在控制檯上正確顯示,那麼爲什麼它不能正確顯示在文本文件中?寫入文件但文件爲空

class Program 
    { 
     public static void Main() 
     { 

      string[] arr1 = new string[200]; 


      System.IO.StreamWriter sr2 = new System.IO.StreamWriter("OrganizedVersion.txt"); 




        // Dictionary, key is number from the list and the associated value is the number of times the key is found 
        Dictionary<string, int> occurrences = new Dictionary<string, int>(); 
        // Loop test data 
        foreach (string value in File.ReadLines("newWorkSheet.txt")) 
        { 
         if (occurrences.ContainsKey(value)) // Check if we have found this key before 
         { 
          // Key exists. Add number of occurrences for this key by one 
          occurrences[value]++; 
         } 
         else 
         { 
          // This is a new key so add it. Number 1 indicates that this key has been found one time 
          occurrences.Add(value, 1); 
         } 
        } 
        // Dump result 
        foreach (string key in occurrences.Keys) 
        { 
         sr2.WriteLine(key.ToString() + occurrences[key].ToString()); 
        }    

        Console.ReadLine(); 



     } 
    } 
+0

我在代碼中找不到任何'Organized.txt' – 2013-05-13 18:37:33

+6

'flush'輸出緩衝區或'關閉'流。 – cgTag 2013-05-13 18:37:53

回答

5

您可以換行代碼在using確保流被關閉。

 using(StreamWriter sr2 = new StreamWriter("OrganizedVersion.txt")) 
     { 
      .... 
     } 

或寫入後,您可以flushclose

sr2.close(); 
+0

這是SOOOO奇怪!就在一分鐘前,我在我的代碼中有這樣的代碼,但它仍然無效,但我在代碼中記錄了sr2.Close(),然後保存了該文檔,現在它正在工作。 – Harmond 2013-05-13 18:50:26

+0

如果您正在調試並停止調試器,則C#不會刷新緩衝區。即使你在調試時正在使用。這就是爲什麼如果你長時間打開流,你應該在發送任何重要數據(即寫入日誌文件)後刷新它們。 – cgTag 2013-05-13 18:55:40

3

這是因爲你實際上OrganizedVersion.txt

貌似@Mathew還指出,你有沒有關閉/清空你的緩衝區。

嘗試using聲明如下:

替換:

System.IO.StreamWriter sr2 = new System.IO.StreamWriter("OrganizedVersion.txt"); 

有了:

using (var sr2 = new System.IO.StreamWriter("OrganizedVersion.txt")) 
{ 
    // Your other code... 
} 
+1

我懷疑這是一個複製粘貼錯誤。我*希望*這是一個複製粘貼錯誤。 – MikeTheLiar 2013-05-13 18:39:08

+0

@mikeTheLiar我希望你是對的。如果那不是問題,我也寧願馬修得到他的信用爲這個答覆... – Crisfole 2013-05-13 18:41:44

+0

大聲笑,沒關係。我寧願在難題上得分。 :) – cgTag 2013-05-13 18:43:17