今回の記事はList配列をバイナリシリアル化する方法とデシリアル(復元)の方法に関して紹介した記事です。初心者にも分かりやすいように記載しているので是非参考にしてみてください。
他にも文字列のバイナリシリアル化やそのバイナリファイルの読み込み方法に関しての記事も書いているので是非そちらも興味があれば見ていってください。
「【C#】オブジェクトのバイナリシリアル化」
「【C#】バイナリファイルの読み込み」
List配列をバイナリシリアル化
まずはList配列をバイナリシリアル化してバイナリファイルとして保存してみましょう。
using Scraping.Define;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace Test1
{
class Test
{
public static void Main()
{
List<string> list = new List<string> {"1","2","3"};
FileStream fs = new FileStream("指定のパス.obj",
FileMode.Create,
FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
//シリアル化して書き込む
bf.Serialize(fs, list);
fs.Close();
}
}
}
バイナリ形式で保存する方法は簡単で、上記のようにバイナリ形式に変換したものをファイルストリームでファイルに保存するのみです。
バイナリシリアル化したList配列をデシリアル化
次にバイナリ形式で保存したList配列の読み込み方法に関してご紹介します。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
namespace Test1
{
class Test
{
//シリアライズ読み込み(バイナリ→文字列)
public static void Main()
{
FileStream fs = new FileStream("指定パス.obj",
FileMode.Open,
FileAccess.Read);
BinaryFormatter f = new BinaryFormatter();
//読み込んで逆シリアル化する
var obj = (List<string>)f.Deserialize(fs);
Console.WriteLine(obj[0])
Console.WriteLine(obj[1])
Console.WriteLine(obj[2])
fs.Close();
}
}
}
読み込み時はstringなどの方以外は、型キャストをする必要があるので上記コードのように丸カッコを先頭に付けます。「(List<string>) =(型)変数」みたいな感じです。出力は下記です。
1
2
3
これでバイナリファイルから元の配列データを呼び出し、配列として再度扱うことができます。
以上で今回の記事を終了します。他にもList配列に似ているDictionary辞書型に関してもバイナリ変換する方法に関しても記事を書いていますし、C#関連の記事も多数記載しています。そちらも是非参考にしてください。
コメント