将字典保存到二进制文件
Save a dictionary to a binary file
我查看了另一个问题 here 以获取我尝试过的代码。
所以我这里有一本字典:
private static Dictionary<int, string> employees = new Dictionary<int, string>();
//the int key is for the id code, the string is for the name
假设字典中填满了具有姓名和识别码的员工
所以我尝试使用二进制文件 'save it' :
FileStream binaryfile = new FileStream(@"..\..\data\employees.bin", FileMode.OpenOrCreate);
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryFormatter.Serialize(@"..\..\data\employees.bin", employees);
binaryfile.Close();
不过,似乎这种技术只适用于对象。
这是我得到的错误:
The best overloaded method match for 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(System.IO.Stream, object)' has some invalid arguments
我的目标是通过读取二进制文件来简单地检索保存的字典。 (如果可能的话?)
已更新。
我认为您对序列化程序的第一个参数是错误的。你给它一个路径字符串,而不是流对象。这对我有用(顺便说一句 - 删除了相对路径)
class Program
{
private static Dictionary<int, string> employees = new Dictionary<int, string>();
static void Main(string[] args)
{
employees.Add(1, "Fred");
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
var fi = new System.IO.FileInfo(@"employees.bin");
using (var binaryFile = fi.Create())
{
binaryFormatter.Serialize(binaryFile, employees);
binaryFile.Flush();
}
Dictionary<int, string> readBack;
using (var binaryFile = fi.OpenRead())
{
readBack = (Dictionary < int, string> )binaryFormatter.Deserialize(binaryFile);
}
foreach (var kvp in readBack)
Console.WriteLine($"{kvp.Key}\t{kvp.Value}");
}
}
我查看了另一个问题 here 以获取我尝试过的代码。
所以我这里有一本字典:
private static Dictionary<int, string> employees = new Dictionary<int, string>();
//the int key is for the id code, the string is for the name
假设字典中填满了具有姓名和识别码的员工
所以我尝试使用二进制文件 'save it' :
FileStream binaryfile = new FileStream(@"..\..\data\employees.bin", FileMode.OpenOrCreate);
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryFormatter.Serialize(@"..\..\data\employees.bin", employees);
binaryfile.Close();
不过,似乎这种技术只适用于对象。
这是我得到的错误:
The best overloaded method match for 'System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(System.IO.Stream, object)' has some invalid arguments
我的目标是通过读取二进制文件来简单地检索保存的字典。 (如果可能的话?)
已更新。
我认为您对序列化程序的第一个参数是错误的。你给它一个路径字符串,而不是流对象。这对我有用(顺便说一句 - 删除了相对路径)
class Program
{
private static Dictionary<int, string> employees = new Dictionary<int, string>();
static void Main(string[] args)
{
employees.Add(1, "Fred");
var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
var fi = new System.IO.FileInfo(@"employees.bin");
using (var binaryFile = fi.Create())
{
binaryFormatter.Serialize(binaryFile, employees);
binaryFile.Flush();
}
Dictionary<int, string> readBack;
using (var binaryFile = fi.OpenRead())
{
readBack = (Dictionary < int, string> )binaryFormatter.Deserialize(binaryFile);
}
foreach (var kvp in readBack)
Console.WriteLine($"{kvp.Key}\t{kvp.Value}");
}
}