web-dev-qa-db-ja.com

辞書の内容をテキストファイルに書き込む方法

辞書タイプの辞書オブジェクトがあります

streamWriterを使用してコンテンツ全体をテキストファイルに出力しようとしましたが、Dictionaryクラスから正しいメソッドを見つけることができませんでした。

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

        }

私は最初の要素のみを取得でき、それは角括弧とコンマ区切りで囲まれています:

[ピーター、管理者]

[Peter管理者]がいると便利です(カンマなし)

23
Chris

自分でエントリをループする必要があります。

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

(.NET4を使用している場合は、最後のToArray呼び出しを省略できます。)

36
LukeH
foreach (KeyValuePair<string,string>  kvp in dictionary)
{
     System.IO.File.AppendAllText("dictionary.txt", string.Format("{0} {1} {2}", kvp.Key,    kvp.Value, Environment.NewLine));
}
4
cptScarlet
// Demonstration
private void WriteDictToFile(Dictionary<string, string> someDict, string path) 
{
    using (StreamWriter fileWriter = new StreamWriter(path)
    {
        // You can modify <string, string> notation by placing your types.
        foreach (KeyValuePair<string, string> kvPair in someDict) 
        {
            fileWriter.WriteLine("{0}: {1}", kvPair.Key, kvPair.Value);
        }
        fileWriter.Close();
    }
}

そして、メインで使用するには

static void Main(string[] args) 
{
    Dictionary<string, string> dataDict = new Dictionary<string, string>();
    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, "PATH\\TO\\FILE");
}
3
r3t40
File.WriteAllLines("myfile.txt",dictionary.Select(s=>s.ToString());

辞書要素のToString関数は、各要素を次の形式でテキストファイルに配置するように定義されているため、これを行う必要があります。

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

書き込みたい文字列を選択し、結果の列挙を反復して各行を書き込む必要があります。

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);
    }
}
2
jrista
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);
1
deostroll