从dat文件中读取字典

本文关键字:读取 字典 文件 dat | 更新日期: 2023-09-27 18:19:39

我在dat文件中编写了Dictionary,我的Dictionary看起来像:

Dictionary<string, Dictionary<string,string>>

现在我的问题是从文件中读取字典,我尝试使用BinaryReader和StreamReader,但我的字典仍然为空。

我的书写代码:

static void WriteToFile(Dictionary<string, Dictionary<string, string>> dic)
            FileStream fs = new FileStream(FILE_NAME, FileMode.OpenOrCreate);
            StreamWriter w = new StreamWriter(fs);
          BinaryFormatter bw = new BinaryFormatter();
        bw.Serialize(fs,dic);
            w.Write(dic);

我的阅读代码:

FileStream fs = newFileStream(FILE_NAME , FileMode.OpenOrCreate);
streamReader r = new StreamReader(fs);
Dictionary<string, Dictionary<string,string>> main = r.read();

有人知道我能做什么吗?

从dat文件中读取字典

首先,您需要执行读取r.read()。然后反序列化读取的结构。

请注意,将IDisposable对象放入using语句中是一种很好的做法。

    static Dictionary<string, Dictionary<string, string>> ReadFromFile()
    {
        using (var fs = new FileStream("C:/test.dat", FileMode.Open))
        {
                var bw = new BinaryFormatter();
                return (Dictionary<string, Dictionary<string, string>>)bw.Deserialize(fs);
        }
    }
    static void WriteToFile(Dictionary<string, Dictionary<string, string>> dic)
    {
        using (var fs= new FileStream("C:/test.dat", FileMode.OpenOrCreate))
        {
            using (var w = new StreamWriter(fs))
            {
                var bw = new BinaryFormatter();
                bw.Serialize(fs, dic);
                w.Write(dic);
            }
        }
    }