如何将字典的内容写入文本文件?

我有一个Dictionary类型的字典对象

并尝试使用StreamWriter将整个内容输出到文本文件,但无法从Dictionary类中找到正确的方法。

using (StreamWriter sw = new StreamWriter("myfile.txt")) { sw.WriteLine(dictionary.First()); } 

我只能检索第一个元素,它还有一个方括号和中间的逗号分隔符:

[彼得,管理员]

并且很高兴[Peter Admin](没有逗号)

您需要自己遍历条目:

 using (StreamWriter file = new StreamWriter("myfile.txt")) foreach (var entry in dictionary) file.WriteLine("[{0} {1}]", entry.Key, entry.Value); 
 File.WriteAllLines("myfile.txt", dictionary.Select(x => "[" + x.Key + " " + x.Value + "]").ToArray()); 

(如果您使用的是.NET4,那么您可以省略最终的ToArray调用。)

 foreach (KeyValuePair kvp in dictionary) { System.IO.File.AppendAllText("dictionary.txt", string.Format("{0} {1} {2}", kvp.Key, kvp.Value, Environment.NewLine)); } 
 File.WriteAllLines("myfile.txt",dictionary.Select(s=>s.ToString()); 

应该这样做,因为字典元素的ToString函数被定义为将每个元素以下列格式放在文本文件中。

 [key1,Value1] [key2,Value2] . . 

您需要选择要编写的字符串,并迭代生成的枚举以写入每一行:

 var dataToWrite = from kvp in dictionary select String.Format("[{0} {1}"], kvp.Key kvp.Value); using (StreamWriter sw = new StreamWriter("myfile.txt")) { foreach (string dataLine in dataToWrite) { sw.WriteLine(dataLine); } } 
 var pairs = from p in yourDictionary.Keys select new {Key=p, Value=yourDictionary[p]}; foreach(var pair in pairs) yourStreamWriter.WriteLine("Key={0}, Value={1}", pair.Key, pair.Value); 
 // Demonstration private void WriteDictToFile(Dictionary someDict) { using (StreamWriter fileWriter = new StreamWriter("PATH\\TO\\FILE.txt") { // You can modify  notation by placing your types. foreach (KeyValuePair kvPair in someDict) { fileWriter.WriteLine("{0}: {1}", kvPair.Key, kvPair.Value); } fileWriter.Close(); } } 

并在Main中使用

 static void Main(string[] args) { Dictionary dataDict = new Dictionary(); Console.Write("Enter your name: "); string n = Console.ReadLine(); Console.Write("Enter your surname: "); string s = Console.ReadLine(); dataDict.Add("Name", n) dataDict.Add("Surname", s) WriteDictToFile(dataDict); }