我正在将输出写入此文件,但它在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 :(得分:5)
您可以将代码包装在using
中以确保流已关闭。
using(StreamWriter sr2 = new StreamWriter("OrganizedVersion.txt"))
{
....
}
或者您可以在写完后flush
或close
。
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...
}