MENU閉じる

HEXA BLOG

プログラム

HEXA BLOGプログラム2012.11.13

C#の便利なクラス紹介 その1

おひさしぶりです。 みやじーです。
最近C#でツールの作成をしている際に、
20Gバイト程度のファイルを扱う必要が出てきてしまい、
一度にメモリには載らないので困っていたのですが・・・
“メモリマップドファイル”というものを耳にしたので調べてみましたぴかぴか(新しい)
System.IO.MemoryMappedFiles名前空間にある
“MemoryMappedFile”というクラスが非常に便利ですexclamation×2
このクラスは、メモリ上にファイルをマッピングして扱うことができます。
シーク処理などは、クラス内部で隠ぺいしてくれているため、
非常に簡単にデータを取り扱うことが可能です。
一度にメモリに載らないファイルもこれで簡単に扱えます手(チョキ)
(使用例)

string fileName = "test.dat"
using (var memoryMappedFile = MemoryMappedFile.CreateFromFile(fileName))
{
using (var viewAccessor = memoryMappedFile.CreateViewAccessor())
{
// 100000byte目に書き込む
byte val = 100;
viewAccessor.Write(100000, val);
  // 100000byte目から読み込む
val = viewAccessor.ReadByte(100000);
}
}

詳しくは
http://msdn.microsoft.com/ja-jp/library/vstudio/dd267544.aspx
同様の機能のクラスを自作しようとしていたのですが、
こちらを使用して事なきを得ました。
また、プロセス間で情報を共有する手段としても使えるので、
こちらの用途でもお世話になりそうですあせあせ(飛び散る汗)
非常に便利なクラスなのでぜひ使用してみて下さい手(グー)

RECRUIT

大阪・東京共にスタッフを募集しています。
特にキャリア採用のプログラマー・アーティストに興味がある方は下のボタンをクリックしてください

RECRUIT SITE