Visual C# Developer Center > Visual C# Forums > Visual C# General > Using BinaryWriter/BinaryReader with a dictionary
Ask a questionAsk a question
 

AnswerUsing BinaryWriter/BinaryReader with a dictionary

  • Wednesday, November 04, 2009 5:48 AMkevinslemons Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    How do I use a BinaryReader and a BinaryWriter with a Dictionary<string, double>?
    I've tried to do it recursively, but still no luck.

    Anyone know how to do this?

Answers

  • Wednesday, November 04, 2009 10:34 AMAndrey Sidorenko Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    Is it what you're looking for?

                Dictionary<string, double> data = new Dictionary<string, double>()
                                                      {
                                                          {"1", 123},
                                                          {"2", 1234},
                                                          {"123123123", 12345}
                                                      };
    
                string fileName = @"c:\tmp\test.data";
                using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
                {
                    foreach (var x in data)
                    {
                        binaryWriter.Write(x.Key);
                        binaryWriter.Write(x.Value);
                    }
                }
    
                data.Clear();
    
                using (BinaryReader binaryReader = new BinaryReader(File.Open(fileName, FileMode.Open)))
                {
                    while (true)
                    {
                        var k = binaryReader.ReadString();
                        var v = binaryReader.ReadDouble();
    
                        data.Add(k, v);
    
                        if (binaryReader.BaseStream.Position == binaryReader.BaseStream.Length)
                            break;
                    }
                }
    
                Debug.Assert(data.Keys.Count == 3);
                Debug.Assert(data["1"] == 123);
                Debug.Assert(data["2"] == 1234);
                Debug.Assert(data["123123123"] == 12345);
    
    

All Replies

  • Wednesday, November 04, 2009 10:34 AMAndrey Sidorenko Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    Is it what you're looking for?

                Dictionary<string, double> data = new Dictionary<string, double>()
                                                      {
                                                          {"1", 123},
                                                          {"2", 1234},
                                                          {"123123123", 12345}
                                                      };
    
                string fileName = @"c:\tmp\test.data";
                using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
                {
                    foreach (var x in data)
                    {
                        binaryWriter.Write(x.Key);
                        binaryWriter.Write(x.Value);
                    }
                }
    
                data.Clear();
    
                using (BinaryReader binaryReader = new BinaryReader(File.Open(fileName, FileMode.Open)))
                {
                    while (true)
                    {
                        var k = binaryReader.ReadString();
                        var v = binaryReader.ReadDouble();
    
                        data.Add(k, v);
    
                        if (binaryReader.BaseStream.Position == binaryReader.BaseStream.Length)
                            break;
                    }
                }
    
                Debug.Assert(data.Keys.Count == 3);
                Debug.Assert(data["1"] == 123);
                Debug.Assert(data["2"] == 1234);
                Debug.Assert(data["123123123"] == 12345);