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

时间:2019-12-15 03:26:06

标签: c# .net asp.net-core

我想将字典保存在文件中

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);
            }
        }
}

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

1 个答案:

答案 0 :(得分: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;
}