C#でテキストファイルを読み書きする1

作成日:2018.12.15
  1. HOME
  2. 趣味のページ
  3. C#でテキストファイルを読み書きする1

このページでは、RichTexBoxにテキストファイルを読み込んだり、テキストファイルとして保存したりする方法について見ていきます。

テキストを読み書きするには、一括して処理する方法と、1行ずつ処理する方法がありますが、ここでは一括して読み書きする方法を見ます。エディタでテキストファイルを読み書きする場合は一括でできます。逆に配列に1つずつ値を代入するような時は1行ずつ処理します。

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

まずは上図のようにコンポーネントを配置します。フォームにRichTextBoxを1つ、ボタンを2つ、OpenFileDialogとSaveFileDialogを追加しました。

エディタにテキストファイルを読み込む処理は色々な時に生じます。それで読込処理はサブルーチンに記述することにしました。ごく基本的な読込のスクリプトは、以下のように記述します。

using System.IO; //ファイルを扱う場合はこれを追加

//読込のサブルーチン
private void FLoad(string path)
{
	StreamReader sr = new StreamReader(path);
	RichTextBox1.Text = sr.ReadToEnd();
	sr.Close();
}

上記コードの説明

using System.IO;

StreamReaderクラスを使う場合はこれを追加しておきます。他にもファイル操作関係に必要なクラスが沢山含まれるので、ファイルを扱うプログラムでは真っ先に追加しておきましょう。

private void FLoad(string path){…}

サブルーチンFLoad()を作成しました。前のページと違うのは引数が存在しています。サブルーチンを呼び出す時は、読み込むテキストファイルのパスを引数に渡します。

StreamReader sr = new StreamReader(path);

StreamReaderを作成します。読み込むファイルのパスをカッコ内に記入します。今回は引数がそれに当たります。また文字コードも指定できますが、何も指定しない場合はUTF-8になるので、文字コードの指定は不要です。

RichTextBox1.Text = sr.ReadToEnd();

Streamにある文字を末尾までいっきに読み込んで、RichTexBoxのTextプロパティに代入します。これでテキストの読み込みが完了します。

sr.Close();

StreamReaderを閉じます。

テキストファイルの書き出し

テキストファイルを書き出す場合も同じようにできます。

using System.IO; //書き出す場合も必要

//テキスト保存用のサブルーチン
private void FSave(string path)
{
	StreamWriter sw = new StreamWriter(path);
	sw.Write(RichTextBox1.Text);
	sw.Close();
}

上記コードの説明

private void FSave(string path){…}

テキスト保存用のサブルーチンFSave()の作成。こちらも引数があります。サブルーチン呼び出し時に、保存先のパスを渡してもらいます。

StreamWriter sw = new StreamWriter(path);

StreamWriteの作成。カッコ内は保存先のファイルパスです。こちらもエンコードを省略するとBOM無しUTF-8になるので、指定する必要はありません。

sw.Write(RichTextBox1.Text);

RichTexBoxのテキストを一括で書き込みます。

sw.Close();

最後にStreamWriterを閉じます。


これで読み書きするスクリプトは記述できました。でもまだプログラムは動きません。次のページではファイル選択ダイアログとファイル保存ダイアログを使って、実際にファイルの読み込み&保存をしたいと思います。