We write the values of Dictionary types to the disk and then parse them. I had to store a Dictionary of string keys and int values. This is also called serialization.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
class Program
{
static void Main()
{
var data = new Dictionary<string, int>()
{
{
"salmon", 5 },
{
"tuna", 6 },
{
"clam", 2 },
{
"asparagus", 3 }
};
// Step 1: get string from Dictionary.
string value = GetLine(data);
// Step 3: save to disk.
File.WriteAllText(
"dict.txt", value);
// Step 4: get dictionary again.
var result = GetDict(
"dict.txt");
foreach (var pair in result)
{
Console.WriteLine(
"PAIR: " + pair);
}
}
static string GetLine(Dictionary<string, int> data)
{
// Step 2: build up the string data.
StringBuilder builder = new StringBuilder();
foreach (var pair in data)
{
builder.Append(pair.Key).Append(
":").Append(pair.Value).Append(',');
}
string result = builder.ToString();
// Remove the end comma.
result = result.TrimEnd(',');
return result;
}
static Dictionary<string, int> GetDict(string file)
{
// Step 5: parse in the dictionary from a string.
var result = new Dictionary<string, int>();
string value = File.ReadAllText(file);
// Split the string.
string[] tokens = value.Split(new char[] { ':', ',' }, StringSplitOptions.RemoveEmptyEntries);
// Build up our dictionary from the string.
for (int i = 0; i < tokens.Length; i += 2)
{
string name = tokens[i];
string freq = tokens[i + 1];
// Parse the int.
int count = int.Parse(freq);
// Add the value to our dictionary.
result[name] = count;
}
return result;
}
}
PAIR: [salmon, 5]
PAIR: [tuna, 6]
PAIR: [clam, 2]
PAIR: [asparagus, 3]