C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
GetLine: The GetLine method receives a Dictionary that was declared at class-level. It uses a StringBuilder.
StringBuilderNext: GetLine() iterates through the Dictionary's KeyValuePair collection. It appends the data to a StringBuilder.
ForeachKeyValuePairGetDict: Next, we must get a new Dictionary<string, int> from the file we saved it to. GetDict here does that for us.
Split: The string has commas and semicolons as separators. We split on these and consume 2 results in each loop iteration.
SplitC# program that persists Dictionary to file
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}
};
// Get string from Dictionary.
string value = GetLine(data);
// Save to disk.
File.WriteAllText("C:\\programs\\dict.txt", value);
// Get dictionary again.
var result = GetDict("C:\\programs\\dict.txt");
foreach (var pair in result)
{
Console.WriteLine("PAIR: " + pair);
}
}
static string GetLine(Dictionary<string, int> data)
{
// 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)
{
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.
if (result.ContainsKey(name))
{
result[name] += count;
}
else
{
result.Add(name, count);
}
}
return result;
}
}
Recover: Whenever you deal with the file system and your code is not critical, try to recover from any errors.
Tip: Recover by returning an error string, blank string, or just doing nothing.
Exception