12章:バイナリ ファイルを読み取るの作成 (C#)

    作成2013.04.14

     VBで作成したプログラムをC#言語に変換します。

  1. 参照元情報
     バイナリ ファイルを読み取るの作成は(Visual Basic ガイド ツアー)
    「バイナリ ファイルを読み取る」にジャンプする
     作成方法の詳細は上記を参照願います。


  2. バイナリ ファイルを読み取るの作成の完成ファイル
     テキスト ファイルからデータを読み取るの作成の解説とおりに作業を実施すると、VBプロジェクトファイル群が完成しますが、C#言語に変換します。
     完成ファイルは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
      [ バイナリ ファイルを読み取るの作成]をダウンロードする。
     解凍すると「FileTest3」フォルダーがあります。
    注(1)「FileTest3」フォルダーの「FileTest3.sln」ファイルをダブルクリックすると「Express 2012 for Windows Desktop」が起動します。
    注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
    注(3)「ソリューションエクスプローラ」ウインドウ内の「Form1.cs」をダブルクリックすると「デザイン」が表示されます。
    注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。
    注(5)「FileTest3.sln」の動作確認は「デバッグ」_「デバッグ開始」で実行します。デバッグ機能を用いて動作確認を行います。


  3. FileTest1の実行
    (1)「Express 2012 for Windows Desktop」のデバッグ機能を使用します。
    (2)「デバッグ」_「デバッグ開始」を選択します。
    (3)操作画面が表示されます。
    (4)Test実行ボタンを押します。
    (5)オープン・ファイル・ダイアログが表示されます。
    (6)任意のファイルを選択してOKボタンをおします。
    (7)保存ファイル・ダイアログが表示されます。
    (8)保存場所とファイル名(拡張子は同じにします)を指定して、保存ボタンを押します。
    (9)クローズボックスでプログラムを終了します。
    (10)保存ファイルにコピーが作成されます。


  4. 新規プロジェクトの作成
    (1)Form1のデザイン設定
     新規プロジェクトを作成すると「デザイナー」にはForm1が自動生成されます。Form1のデザイン設定はVBのForm1のコピー&ペーストで完成します。

    (2) Form1コード
     基本コードが自動生成されます。


  5. Form1の全コード
    using System;
    using System.Windows.Forms;
    using System.IO;
    
    namespace FileTest3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Button1_Click(object sender, EventArgs e)
            {
                if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    using (BinaryReader reader = new BinaryReader(File.Open(OpenFileDialog1.FileName, FileMode.Open)))
                    {
                        int FLength =(int) reader.BaseStream.Length;
                        byte[] bytes = reader.ReadBytes(FLength);
    
                        if (SaveFileDialog1.ShowDialog() == DialogResult.OK)
                        {
                            using (BinaryWriter writer = new BinaryWriter(File.Open(SaveFileDialog1.FileName, FileMode.Create)))
                            {
                                writer.Write(bytes);
                            }
                        }
                        int i = 0;
                    }              
                }
            }
        }
    }
    


  6. Form1コードの説明
    (1)using System.IO;はStreamReaderクラスを使用するのに必要です。
    (2)OpenFileDialog1.ShowDialog()はOpenFileDialogを開きます。
    (3)using (){}は{}の間で変数が有効となります。
    (4)BinaryReader reader = new BinaryReader(File.Open(OpenFileDialog1.FileName, FileMode.Open))で変数readerをBinaryReader型で生成し、初期値としてOpenFileDialogで選択したファイルを指定します。
    (5)int FLength =(int) reader.BaseStream.Length;でファイルのバイト数を変数Flengthに設定します。
    (6)byte[] bytes = reader.ReadBytes(FLength);で変数bytesにデータを読み込みます。
    (7)SaveFileDialog1.ShowDialog() でSaveFileDialogを開きます。
    (8)BinaryWriter writer = new BinaryWriter(File.Open(SaveFileDialog1.FileName, FileMode.Create))で変数writerをBinaryWriter型で生成し、初期値としてSaveFileDialogで設定したファイルを設定します。
    (9) writer.Write(bytes);でデータを書き込みます。


    感想:
    (1)バイナリーファイルの入出力はVBとC#で互換性がなさそうです。
    (2)純粋C言語のバイナリーファイル入出力機能はかなり充実していました。
    (3)昔は、データ容量の制限から、テキストファイルではなく、バイナリーファイルが主流でした。
    (4)C#は本格派プログラマーの要求に答えるため、機能が豊富なBinaryReaderクラスとBinaryWriterクラスを設けたと思われます。







13章:ファイルとディレクトリの操作の作成 (C#)に行く。

トップページに戻る。