我想在文件上保存字典
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);
}
}
}
编写字典的最佳方法,字典是对象的关键(以及如何读取它)
由于您使用的是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;
}
您可以将Dictionary转换为JSON字符串。将Dict字符串保存到文件。阅读。使用您的模型反序列化它