// /** // * File: DiskObject.cs // * Author: haraldwolff // * // * This file and it's content is copyrighted by the Author and / or copyright holder. // * Any use wihtout proper permission is illegal and may lead to legal actions. // * // * // **/ using System; using System.IO; namespace ln.types.serialize { public class DiskObject { public String FileName { get; private set; } public T Instance { get; set; } public DiskObject(string fileName) { FileName = fileName; Load(); } public DiskObject(string fileName,T instance) :this(fileName) { Instance = instance; } public void Load() { if (File.Exists(FileName)) { using (FileStream fileStream = new FileStream(FileName, FileMode.Open)) { ObjectReader objectReader = new ObjectReader(fileStream); Instance = (T)objectReader.Read(); fileStream.Close(); } } else { Instance = Activator.CreateInstance(); } } public void Save() { lock (this) { String tmpFileName = string.Format("{0}.tmp", FileName); using (FileStream fileStream = new FileStream(tmpFileName, FileMode.OpenOrCreate, FileAccess.Write)) { ObjectWriter objectWriter = new ObjectWriter(fileStream); objectWriter.Write(Instance); fileStream.Close(); } if (!File.Exists(FileName)) File.Move(tmpFileName, FileName); else File.Replace(tmpFileName, FileName, FileName + ".old"); } } } }