69 lines
1.9 KiB
C#
69 lines
1.9 KiB
C#
|
// /**
|
|||
|
// * 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<T>
|
|||
|
{
|
|||
|
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<T>();
|
|||
|
}
|
|||
|
}
|
|||
|
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");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|