binary DATA の入力

1
2
3
4
5
6
7
8
9
10

C# の FileStream で binary data を入力バイト長を指定して File から読み込みます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. File から BINARY DATA をまとめて入力して byte 配列に格納します。
    入力する領域の定義です。
    byte[] byt = new byte[1024];
  2. このプログラムを実行する前に "C:\\data\\work.bin" のファイルを作成しておいて下さい。
    もちろん実行環境に合わせて、下記の行を修正してもかまいません。
    "C:\\data\\work.bin"
  3. leng= reader.Read(byt,0,byt.Length) の説明です。
    パラメータ 説明
    leng 実際に入力されたバイト長を格納する領域
    byt 入力データを格納する byte 配列
    0 入力開始位置(オフセット)
    byt.Length最大入力バイト長
  4. ソースコードです。
    /**************************************************************/
    /*★ Binary データを入力してコンソールに表示する    前田 稔 ★*/
    /**************************************************************/
    using System;
    using System.IO;    // for File, StreamReader
    
    class BinFileRead
    {
        public static int Main()
        {
            string file_name = "C:\\data\\work.bin";
            byte[] byt = new byte[1024];
            int    leng;
    
            if (!File.Exists(file_name)) return -1; //ファイルの有無をチェック
            FileStream reader = File.Open(file_name,FileMode.Open);
            leng= reader.Read(byt,0,byt.Length);
            reader.Close();
            for(int i=0; i<leng; i++) Console.WriteLine("{0}",byt[i]);
            Console.ReadLine();
            return 0;
        }
    }
    
  5. C++ の FILE ポインタを使った通常のバイナリ入出力は レコードの入出力 を参照して下さい。

ファイルのコピー

  1. Binary Data の入力と出力が終わった所で、ファイルをコピーしてみましょう。
    Binary Data の出力は binary DATA の出力 を参照して下さい。
    C# にはファイルをコピーする便利なメソッドが備わっています。
    詳細は ファイル操作 を参照して下さい。
  2. 利用しやすいように、ファイルをコピーするメソッド File_Copy() を作成します。
    入力ファイルが存在しない時は -1 をリターンします。
    入力バイト長が 4096 より小さくなったら最後のデータです。
        // File Copy 関数
        static int File_Copy(string i_file, string o_file)
        {
            byte[] byt = new byte[4096];
            int    leng;
            if (!File.Exists(i_file))   return -1; //ファイルの有無をチェック
            FileStream reader = File.Open(i_file,FileMode.Open);
            FileStream writer = File.Create(o_file);
    
            while(true)
            {   leng= reader.Read(byt,0,byt.Length);
                writer.Write(byt,0,leng);
                if (leng < byt.Length)    break;
            }
            reader.Close();
            writer.Close();
            return 0;
        }
    
  3. copy() メソッドを呼び出す Main メソッドです。
    事前に入力ファイル("C:\\TMP\\w1.jpg")を格納しておいて下さい。
        public static int Main()
        {
            string input_file = "C:\\TMP\\w1.jpg";
            string output_file = "C:\\TMP\\ww1.jpg";
            if (File_Copy(input_file,output_file)==-1)
                Console.Write("Input File Error");
            return 0;
        }
    

超初心者のプログラム入門(C# Frame Work)