C#で任意のデータをファイルに保存することは可能でしょうか?
-
06-07-2019 - |
質問
メモリにロードされた多くのコレクションを持つクラスがあります。このクラスをすべてのデータとともにファイルに保存して、後で簡単にメモリに再ロードできるようにすることはできますか?これらすべてを処理できるインターフェースはあるのでしょうか?
解決
あなたが説明しているものはと呼ばれます 連載化. 。オブジェクトをディスクに保存できるデータ形式にシリアル化し、後でそのデータをオブジェクトに逆シリアル化できます。これを行う方法はたくさんありますが、最初のステップは、 Serializable 属性を追加してクラスをシリアル化可能にすることです。
[Serializable]
public class YourClass
{
// the class goes here
}
次に、たとえば、 XmlSerializer
シリアル化/逆シリアル化を処理するクラス。
アップデート
使用できることを言及しておきます。 XmlSerializer
たとえあなたのクラスが Serializable
属性。ただし、他の一部のシリアル化メカニズムではこの属性が必要です。
他のヒント
BinaryFormatter インスタンスをシリアル化する
そして、クラス定義の前に[Serializable]属性を追加します
.Netシリアル化機能を使用できます。クラスを[シリアル化可能]属性でマークするだけで、すべてのメンバーもシリアル化可能になります
サンプルコード:
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;
}
}
所属していません StackOverflow