Visual C# Developer Center >
Visual C# Forums
>
Visual C# General
>
Using BinaryWriter/BinaryReader with a dictionary
Using BinaryWriter/BinaryReader with a dictionary
- 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
- 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);- Proposed As Answer byAndrey Sidorenko Wednesday, November 04, 2009 10:35 AM
- Marked As Answer bykevinslemons Wednesday, November 04, 2009 9:30 PM
All Replies
- 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);- Proposed As Answer byAndrey Sidorenko Wednesday, November 04, 2009 10:35 AM
- Marked As Answer bykevinslemons Wednesday, November 04, 2009 9:30 PM


