写入文件但文件为空

时间:2013-05-13 18:36:07

标签: c#

我正在将输出写入此文件,但它在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();



        }
    }

2 个答案:

答案 0 :(得分:5)

您可以将代码包装在using中以确保流已关闭。

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

或者您可以在写完后flushclose

 sr2.close();

答案 1 :(得分: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...
}