FileStreamを用いてファイルにテキスト(文字列 / String型)の読み書きをする - C#

FileStreamを用いてファイルにテキスト情報の読み書きをします。

概要

FileStreamを用いてアクセスしたファイルにテキストデータを書き込む場合は、FileStreamからStreamReader, StreamWriterのオブジェクトを作成することでテキストデータの読み書きができます。

UI

以下のUIを作成します。フォームにボタンを2つ、OpenFileDialog, SaveFileDialog, テキストボックスを配置します。

コード

以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace FileStreamApp
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
        StreamReader sr = new StreamReader(fs);
        string text = sr.ReadToEnd();
        textBox1.Text = text;
        sr.Close();
        fs.Close();

        MessageBox.Show("ファイルを読み込みました。");
      }
    }

    private void button2_Click(object sender, EventArgs e)
    {
      if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK){
        FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
        StreamWriter sw = new StreamWriter(fs);
        sw.WriteLine(textBox1.Text);
        sw.Close();
        fs.Close();

        MessageBox.Show("ファイルを保存しました。");
      }
    }
  }
}

解説

ファイルの書き込み

  if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK){
    FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
    StreamWriter sw = new StreamWriter(fs);
    sw.WriteLine(textBox1.Text);
    sw.Close();
    fs.Close();

    MessageBox.Show("ファイルを保存しました。");
  }
ファイルの書き込みのコードは上記になります。
ファイル保存ダイアログを表示し、ファイルが指定された場合に処理を実行します。保存するファイル名からFileStreamのオブジェクトを作成します。FileStreamのコンストラクタの第二引数に"FileMode.Create"を与えてファイルを作成し書き込むモードで作成します。
ファイルの書き込みはStreamWriterオブジェクトで行います。StreamWriterオブジェクトを作成します。コンストラクタには元となるStraemを与えいます。今回は先に作成したFileStreamおぶえじぇくとを与えます。
StreamWriterクラスのWriteLine()メソッドを呼び出してテキストデータを書き込みます。
処理が終了した後メッセージダイアログを表示します。

ファイルの読み込み

  if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
    FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
    StreamReader sr = new StreamReader(fs);
    string text = sr.ReadToEnd();
    textBox1.Text = text;
    sr.Close();
    fs.Close();

    MessageBox.Show("ファイルを読み込みました。");
  }
上記がファイルの読み込み部分です。OpenFileDialogでファイルが選択されると、FileStreamを利用してファイルを開きます。FileStreamのコンストラクタの第一引数に開くファイル名(ダイアログボックスで選択されたファイル名)を与えます。
FileStreamオブジェクト作成後、StreamReaderオブジェクトを作成します。StreamReaderのコンストラクタの第一引数に対象とするStreamを与えます。今回の場合はFileStreamを与えています。
ファイルの読出しは、StreamReaderのReadToEnd()メソッドで読み出します。読み出したテキストをテキストボックスに表示します。
処理終了後にメッセージボックスを表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


テキストボックスにテキストを入力します。


[button2]をクリックします。名前を付けて保存ダイアログが表示されますので、ファイル名を入力し[保存]ボタンを押します。


ファイルが保存された旨のメッセージが表示されます。


ファイルが作成されています。


ファイルをメモ帳で開くと、先ほどテキストボックスに入力した文字列が保存されていることがわかります。


アプリケーションを再度起動します。起動後[button1]ボタンをクリックします。


ファイルを開くダイアログが表示されます。先ほど保存したファイルを選択して開きます。


ファイルを読み込んだ旨のメッセージが表示されます。


ファイルを読み込み、テキストボックスにファイルの内容が表示されました。


FileStreamを用いてテキストのファイルへの読み書きが実現できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2020-06-11
作成日: 2013-08-06
iPentec all rights reserverd.