テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み

テキストファイルを開き、ファイル内容を読み込むコードと実行結果を紹介します。

概要

ファイルを開き、ファイル内のテキストを読み出します。一回の読み込みでファイル内のテキストをすべて読み取る実装を紹介します。

1行ずつ読み取る場合
テキストファイルを1行ずつ読み込む場合は、こちらの記事を参照してください。

プログラム1 : FileStream を利用するコード

UI

下図のUIを準備します。TextBox, Label, Button, OpenDialog をひとつずつ配置します。

テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像1

コード

下記のコードを記述します。(button1のclickイベントを実装します。)

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 TextFileBulkRead
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        label1.Text = openFileDialog1.FileName;

        FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.OpenOrCreate);
        StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("Shift_JIS"));

        string doc = sr.ReadToEnd();
        textBox1.Text += doc;

        sr.Close();
        fs.Close();
      }
    }
  }
}

解説

ファイルを開くダイアログを開きます。ダイアログでファイルが選択された場合に、if文内が実行されます。

  if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
    ...
  }

選択されたファイルのファイル名をLabelに表示します。FileStreamを用いて選択されたファイルを開きます。開いたストリームから、ファイル内容を読み取るためのStreamReaderを作成します。ファイル読み込み時のエンコーディングはShift-JISとします。

    label1.Text = openFileDialog1.FileName;

    FileStream fs = new FileStream(openFileDialog1.FileName, FileMode.Open);
    StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("Shift_JIS"));

StreamReaderのReadToEnd()メソッドを呼び出し、ファイルの内容をすべて読み出します。読み出した結果をTextBoxに表示します。最後に、StreamReaderとFileStreamを閉じます。

    string doc = sr.ReadToEnd();
    textBox1.Text += doc;

    sr.Close();
    fs.Close();

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像2

[button1]をクリックします。ファイルを開くダイアログが表示されます。読み込むファイルを選択します。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像3

ファイルを読み込みファイル内容をテキストボックスに表示します。ファイルの内容がテキストボックスに表示できています。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像4

以上でファイルの読み込みができました。

プログラム2 : StreamReader のみ利用コード

Windows Formアプリケーションを作成します。

UI

下図のUIを作成します。Buttonと複数行のTextBox、openFileDialogを配置します。今回のプログラムでは[button1]のみを利用します。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像5

コード

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 TextFileReadWrite
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      if (openFileDialog1.ShowDialog() == DialogResult.OK) {
        string file = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(file, Encoding.GetEncoding("SHIFT_JIS"));
        textBox1.Text = sr.ReadToEnd();
        sr.Close();
      }
    }
  }
}

解説

openFileDialogを表示し、読み込むテキストファイルを選択します。ファイルが選択された場合はShowDialogメソッドの戻り値が DialogResult.OK になりif文のブロックが実行されます。
  if (openFileDialog1.ShowDialog() == DialogResult.OK) {
    /* 中略 */
  }


openFileDialog で選択されたファイル名を FileNameプロパティから取得します。StreamReaderクラスのインスタンスを作成しファイルを開きます。

    string file = openFileDialog1.FileName;
    StreamReader sr = new StreamReader(file, Encoding.GetEncoding("SHIFT_JIS"));


StreamReader クラスのReadToEnd()メソッドを呼び出して、ファイルからテキストをまとめて読み出します。

    textBox1.Text = sr.ReadToEnd();

ファイルの読み込み完了後、ファイルを閉じます。

    sr.Close();

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像6

[button1]をクリックします。ファイルを開くダイアログが表示されます。読み込むテキストファイルを選択します。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像7

テキストファイルが読み込まれ、テキストボックスに表示されます。
テキストファイルをまとめて読み込むコードと実行結果 - テキストファイルの一括読み込み:画像8

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2010-06-19
Copyright © 1995–2025 iPentec all rights reserverd.