使用多个文件进行序列化

时间:2014-02-07 20:26:26

标签: c# serialization

我有一个相当简单的问题,但答案可能很难。 如何让我的代码将2个不同的列表序列化为自己的文件?

文件1中的列表1和文件2中的列表2

我知道如何让代码使用1个文件,但在我的情况下,2个文件会更好。

我没有看到发布我的代码的用法,但如果有人需要它,请问;)

编辑:

我的情况如下:

if (File.Exists("accounts.bin"))
{
    Serializer serializer = new Serializer();
    ObjectToSerialize objectToSerialize = serializer.DeSerializeObject("accounts.bin");
    accounts = objectToSerialize.Accounts;
}

以上是在程序的主类中调用的。

public class Serializer
{
    public Serializer()
    {
    }

    public void SerializeObject(string filename, ObjectToSerialize objectToSerialize)
    {
        Stream stream = File.Open(filename, FileMode.Create);
        BinaryFormatter bFormatter = new BinaryFormatter();
        bFormatter.Serialize(stream, objectToSerialize);
        stream.Close();
    }

    public ObjectToSerialize DeSerializeObject(string filename)
    {
        ObjectToSerialize objectToSerialize;
        Stream stream = File.Open(filename, FileMode.Open);
        BinaryFormatter bFormatter = new BinaryFormatter();
        objectToSerialize = (ObjectToSerialize)bFormatter.Deserialize(stream);
        stream.Close();
        return objectToSerialize;
    }
}

[Serializable()]
public class ObjectToSerialize : ISerializable
{
    private ObservableCollection<Account> accounts;
    //private ObservableCollection<Pokémon> pokedex;

    public ObservableCollection<Account> Accounts
    {
        get { return this.accounts; }
        set { this.accounts = value; }
    }
    /*public ObservableCollection<Pokémon> Pokedex
    {
        get { return this.pokedex; }
        set { this.pokedex = value; }
    }*/

    public ObjectToSerialize()
    {
    }

    public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
    {
        info.AddValue("Accounts", Accounts);
    }
}

正如你所看到的,我已经尝试了一些东西,但它们没有用。

1 个答案:

答案 0 :(得分:1)

如果我知道每个列表中有哪些数据,我可以更好地回答,但我会举几个例子。

List<string> nsv1 = new List<string> { //pretend this is data };
List<string> nsv2 = new List<string> { //pretend this is data };
File.WriteAllLines(@".\path\to\file1.txt", nsv1);
File.WriteAllLines(@".\path\to\file2.txt", nsv2);

如果你让我更好地了解你的数据是什么,我可以提供其他方式来格式化它(比如说它是List<int>而不是List<string>)但是这应该给你基本的想法