The binary file contains a single 32-bit integer at the start. This tells us how many pairs are found in the rest of the file. Then we can read in that many pairs.
using System;
using System.Collections.Generic;
using System.IO;
class Program
{
static void Main()
{
while (true)
{
Console.WriteLine(
"1=Write, 2=Read");
string value = Console.ReadLine();
if (value ==
"1")
{
var dictionary = new Dictionary<string, string>();
dictionary[
"perls"] =
"dot";
dictionary[
"net"] =
"perls";
dictionary[
"dot"] =
"net";
Write(dictionary,
"C:\\dictionary.bin");
}
else if (value ==
"2")
{
var dictionary = Read(
"C:\\dictionary.bin");
foreach (var pair in dictionary)
{
Console.WriteLine(pair);
}
}
}
}
static void Write(Dictionary<string, string> 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);
writer.Write(pair.Value);
}
}
}
static Dictionary<string, string> Read(string file)
{
var result = new Dictionary<string, string>();
using (FileStream fs = File.OpenRead(file))
using (BinaryReader reader = new BinaryReader(fs))
{
// Get count.
int count = reader.ReadInt32();
// Read in all pairs.
for (int i = 0; i < count; i++)
{
string key = reader.ReadString();
string value = reader.ReadString();
result[key] = value;
}
}
return result;
}
}
1=Write, 2=Read
1
1=Write, 2=Read
2
[perls, dot]
[net, perls]
[dot, net]
1=Write, 2=Read