テキストファイルを開き、ファイル内容を読み込むコードを紹介します。
概要
ファイルを開き、ファイル内のテキストを読み出します。
こちらの記事で紹介している方式とは違い、一回の読み込みでファイル内のテキストをすべて読み取る実装です。
プログラム1 : FileStream を利用するコード
UI
下図のUIを準備します。TextBox, Label, Button, OpenDialog をひとつずつ配置します。
コード
下記のコードを記述します。(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();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。ファイルを開くダイアログが表示されます。読み込むファイルを選択します。
ファイルを読み込みファイル内容をテキストボックスに表示します。ファイルの内容がテキストボックスに表示できています。
以上でファイルの読み込みができました。
プログラム2 : StreamReader のみ利用コード
Windows Formアプリケーションを作成します。
UI
下図のUIを作成します。Buttonと複数行のTextBox、openFileDialogを配置します。今回のプログラムでは[button1]のみを利用します。
コード
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();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。ファイルを開くダイアログが表示されます。読み込むテキストファイルを選択します。
テキストファイルが読み込まれ、テキストボックスに表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
- まとめて処理
- 行ごとの処理
- FileStraeamの利用サンプル
最終更新日: 2023-12-26
作成日: 2010-06-19