我在Java中有这个代码,它以二进制格式序列化一些对象。
void save(String name) {
try {
FileOutputStream fs = new FileOutputStream(name);
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(this);
os.close();
}
catch (Exception ex) {
}
}
我需要在C#中这样做,我该怎么做?
答案 0 :(得分:2)
要以二进制格式保存某些对象,可以使用 BinaryFormatter 类。但是这个类要求您要序列化的类必须使用 Serializable 属性进行修饰。
所以下面的类Person就是一个如何做到这一点的例子。
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void Save(string filePath)
{
var formatter = new BinaryFormatter();
using (var stream = File.Open(filePath, FileMode.Create))
formatter.Serialize(stream, this);
}
public static Person ReadFromFile(string filePath)
{
var formatter = new BinaryFormatter();
using (var stream = File.OpenRead(filePath))
return (Person)formatter.Deserialize(stream);
}
}
你可以这样使用:
public class Program
{
public static void Main(string[] args)
{
var p = new Person { Name = "Alberto Monteiro", Age = 25 };
p.Save("person.bin");
var person = Person.ReadFromFile("person.bin");
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
}
}