是否可以将任意数据保存到C#中的文件中?

时间:2009-10-25 10:35:08

标签: c# class collections file-io storage

我有一个在内存中加载了许多集合的类。是否有可能将这个类及其所有数据保存到文件中,以便以后能够简单地将其重新加载到内存中?是否有可以处理所有这些的界面?

3 个答案:

答案 0 :(得分:4)

您所描述的内容称为序列化。您可以将对象分类为可以存储在磁盘上的某种数据格式,然后可以将该数据反序列化为对象。有很多方法可以做到这一点,但第一步是通过添加Serializable属性使您的类可序列化:

[Serializable]
public class YourClass
{    
    // the class goes here
}

然后你可以使用例如XmlSerializer类来处理序列化/反序列化。

<强>更新
我应该提一下,即使您的班级没有使用XmlSerializer属性进行修饰,也可以使用Serializable。但是,其他一些序列化机制确实需要该属性。

答案 1 :(得分:1)

使用BinaryFormatter序列化实例

在类定义

前面添加[Serializable]属性

答案 2 :(得分:0)

您可以使用.Net序列化工具,只需要使用[Serializable]属性标记您的类,并且所有成员也应该可序列化

示例代码:

using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class A
{
public static void Serialize(object obj,string filepath)
{
Formatter f = new BinaryFormatter();
f.Serialize(new FileStream(filepath,FileMode.Create),obj);
}
public static A Deserialize(string filepath)
{
Formatter f = new BinaryFormatter();
return  f.Deserialize(new FileStream(filepath, FileMode.Open)) as A;
}
}