How to quickly save/load class instance to file

后端 未结 7 1470
终归单人心
终归单人心 2020-12-09 05:33

I have several collections of classes/structs in my app.

The class is just a class with fields

class A
{
  public int somevalue;
  public string some         


        
7条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-09 05:50

    Old topic, but I modified Tim Coker's answer above to utilize the using blocks to properly dispose of the stream objects and save only a single class instance at a time:

    public static T Load(string FileSpec) {
        XmlSerializer formatter = new XmlSerializer(typeof(T));
    
        using (FileStream aFile = new FileStream(FileSpec, FileMode.Open)) {
            byte[] buffer = new byte[aFile.Length];
            aFile.Read(buffer, 0, (int)aFile.Length);
    
            using (MemoryStream stream = new MemoryStream(buffer)) {
                return (T)formatter.Deserialize(stream);
            }
        }
    }
    
    public static void Save(T ToSerialize, string FileSpec) {
        Directory.CreateDirectory(FileSpec.Substring(0, FileSpec.LastIndexOf('\\')));
        FileStream outFile = File.Create(FileSpec);
        XmlSerializer formatter = new XmlSerializer(typeof(T));
    
        formatter.Serialize(outFile, ToSerialize);
    }
    

提交回复
热议问题