FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

バイナリーファイルの読み書き

 BinaryWriterとBinaryReaderを使用すると簡単にバイナリーファイルの読み書きを行うことができます。
 この2つを組み合わせて使用することで構造化されたバイナリーファイルの読み書きができます。(そのかわりランダムアクセスには向いていません。)
 以下のサンプルコードではBinaryWriterでバイナリーファイルを作成し、そのファイルをBinaryReaderで読み込んで出力しています。
using System;
using System.IO;

namespace BinaryFile
{
    class Program
    {
        static void Main(string[] args)
        {
            var filePath = "バイナリーファイルのパス";

            CreateBinaryFile(filePath);

            ReadBinaryFile(filePath);
        }

        static void CreateBinaryFile(string filePath)
        {
            using(var writer = new BinaryWriter(File.OpenWrite(filePath)))
            {
                writer.Write("ABCDEF");
                writer.Write(12345);
            }
        }

        static void ReadBinaryFile(string filePath)
        {
            using(var reader = new BinaryReader(File.OpenRead(filePath)))
            {
                // 書き込みしたときと同じ手順で読み出し
                Console.WriteLine(reader.ReadString());
                Console.WriteLine(reader.ReadInt32());
            }
        }
    }
}
 BinaryWriterのWriteメソッドでデータを書き込んでいきます。
 Writeメソッドには書き込むデータ型にあわせて幾つかのオーバーロードが用意されています。
 そのため、一々Byte配列に変換するような手間はありません。

 次に、バイナリーファイルからの読み込みですが、BinaryWriterで作成されたファイルの場合BinaryReaderを使用することで、書き込んだ際の構造に合わせて読み込みができます。
 サンプルでは文字列を書き込んだ後にint型のデータを書き込んでいます。
 なので、BinaryReaderではReadStringメソッドで文字列データを読み込み、次にReadInt32メソッドでint型のデータを読み取ります。
 この結果は以下の様になります。
バイナリファイル読み書き
 書き込んだデータがちゃんと読みだされています。
 BinaryWriterとBinaryReaderを組み合わせて使用することで、読み書きするデータサイズ等を気にすることなく操作が可能です。
 そのかわりBinaryReaderを使用する場合はランダムアクセスはできません。(Seekメソッド等は用意されていません。)
 ランダムアクセスしたい場合はBinaryWriter、BinaryReaderを使用しない方法で処理を行う必要があります。
 バイナリーファイルのランダムアクセスについては次回説明します。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。