如何将字典(对象的键)保存在文件中然后阅读

问题描述 投票:1回答:2

我想在文件上保存字典

public class TermDocs
{
    public string term { get; set; }
    public int documentid { get; set; }
}
static void Writetermdoc(Dictionary<TermDocs, float> dictionary, string file)
{
        using (FileStream fs = File.OpenWrite(file))
        using (BinaryWriter writer = new BinaryWriter(fs))
        {
            // Put count.
            writer.Write(dictionary.Count);
            // Write pairs.
            foreach (var pair in dictionary)
            {
                writer.Write(pair.Key);//error : can not convert from TermDocs to bool
                writer.Write(pair.Value);
            }
        }
}

编写字典的最佳方法,字典是对象的关键(以及如何读取它)

c# .net asp.net-core
2个回答
3
投票

由于您使用的是BinaryWriter,所以导致错误。使用StreamWriter代替

public static void Writetermdoc(Dictionary<TermDocs, float> dictionary, string file)
{
   using (StreamWriter writer = new StreamWriter(file))
   {
       // Write pairs.
       foreach (var pair in dictionary)
       {
          writer.WriteLine("{0}|{1}|{2}", pair.Key.documentid, pair.Key.term, pair.Value);
       }
    }
}

并以字典形式读取此文件:

public static Dictionary<TermDocs, float> ReadFile(string file)
{
    var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
    Dictionary<TermDocs, float> dictionary = new Dictionary<TermDocs, float>();
    using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
    {
        string line;
        while ((line = streamReader.ReadLine()) != null)
        {
            var spl = line.Split('|');
            dictionary.Add(new TermDocs { documentid = Convert.ToInt32(spl[0]), term = spl[1] }, float.Parse(spl[2]));
        }
    }
    return dictionary;
}

0
投票

您可以将Dictionary转换为JSON字符串。将Dict字符串保存到文件。阅读。使用您的模型反序列化它

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.