ファイルにアクセス【C#を始めよう】

C#でプログラムを始めてみる連載の7回目です。前回の記事はコチラです。

hirocom777.hatenadiary.org

ファイルにアクセスする

前回はフォームにメニューを実装しました。実装したメニューを選択すると、簡単なプログラムが実行されるようにできました。

f:id:HiroCom777:20210910145926j:plain

今回は、ここに実際に使う機能(ファイルの読込み、保存)を実装します。

テキストファイルを読み込む

それでは、まず読込ができるようにしましょう。任意の場所にテスト用のテキストファイルを作ります。ここでは"C:\Data\TEST.txt"としました。内容は以下の様にしました。メモ帳などで編集してください。

Hello C#!!

続いプログラムです。Visual StudioIDEのソリューションエクスプローラーでForm1.csを選択して書き換えましょう。今まではメニューのOpenを選択すると"Openが選択されました"とメッセージが出ていました。この部分を無効にするために、先頭に // を付けます。 // を付けた行はコメント化され無効となります。その後にテキストファイルを開くプログラムを書いていきます。以下の様になりました。

    private void mnuOpen_Click(object sender, EventArgs e)
    {
        // MessageBox.Show("Openが選択されました", "TextEditor", MessageBoxButtons.OK);
        System.IO.StreamReader sr = new System.IO.StreamReader(@"C:\Data\TEST.txt"); 
        this.txtMain.Text = sr.ReadToEnd();
        sr.Close();
    }

それでは、実行してみましょう。メニューのOpenを選択すると、以下の様になりました。

f:id:HiroCom777:20210910165640j:plain

ファイルの内容を読み込めていますね!!

テキストファイルの書込み

お次は書き込みに挑戦します。今度はメニューのSaveに割り付けます。今度はメッセージを出していた行のメッセージを"ファイルを保存します"と変更します。その下にファイルに書き込む処理を書きました。

   private void mnuSave_Click(object sender, EventArgs e)
    {
        MessageBox.Show("ファイルを保存します", "TextEditor", MessageBoxButtons.OK);
        System.IO.StreamWriter wr = new System.IO.StreamWriter(@"C:\Data\TEST.txt");
        wr.Write(this.txtMain.Text);
        wr.Close();
    }

実行してメニューのOpenを選択すると、前回と同じようになりますね。ここで内容を以下の様に書き換えてみましょう。

f:id:HiroCom777:20210910165830j:plain

続いてメニューのSaveを選択するとメッセージが出てきますので、OKボタンを押すと保存が完了します。メモ帳などでファイルを開いてみると、以下の様になっています。

Hello C#!!
ByeBye!!

ファイルの内容がちゃんと変更されています。

名前空間(namespace)

今回はSystem.IO.StreamReaderとSystem.IO.StreamWriterを使ってファイルにアクセスしました。C#では .NET frameworkのクラスライブラリを使用して、色々な機能を実現しています。そして、クラスライブラリの大半はSystemの中に入っています。つまり、Systemはクラスライブラリの場所を示しています。System名前空間と呼んでいます。名前空間(namespace)とはクラスを階層的に管理するためのしくみです。階層の区切りには'.'を使います。

今回はファイルを操作するにあたりSystemの下にあるIOという名前空間内にあるクラスライブラリを使いました。Systemの下のIOの下にあるStreamReaderとStreamWriterを使ったということです。この場所の事もSystem.IO名前空間と呼びます。StreamReaderとStreamWriterは他にも色々な機能があります。

System.IO名前空間の下には、他にもファイルやフォルダーのアクセスや操作に関するクラスライブラリが提供されています。また、Systemの下には他にも色々な名前空間があってその下に色々なクラスライブラリがあります。

次回は今回の解説

いかがでしょうか。C#でどうやって機能を実装していくか、大体つかめてきたと思います。次回は、今回作成したプログラムの解説をします。お楽しみに!!

hirocom777.hatenadiary.org C#で簡単なツールを作る連載記事はコチラからどうぞ