ファイルを利用する (2/5)
作成:2013-09-14 10:41
更新:2013-09-14 10:50
更新:2013-09-14 10:50
■StreamReaderとテキストの読み込み
続いて、テキストファイルの読み込みについてです。テキストの読み込みは「StreamReader」というクラスを利用するのが一般的です。これは以下のようにファイルのパスを引数に指定してインスタンスを作成します。
こうしてインスタンスを作成し、そこから必要に応じてメソッドを呼び出してテキストを読み込んでいきます。読み込むためのメソッドはいくつかのものが用意されています。
・1文字だけ読み込む
・指定した範囲を読み込む
・改行コードまで読み込む
・最後まで読み込む
基本的に、「1行ずつ読み込むならReadLine、まとめて全部読むならReadToEnd」と覚えておきましょう。この2つがもっとも頻繁に使うものになるはずです。ReadToEndは扱いが簡単ですから、ReadLineを使ったサンプルを下にあげておきましょう。EXEファイルのある場所から「data.txt」というファイルを開き、1行ずつテキストを読み込んで、それを加工してTextBoxに表示させます。
このStreamReaderを使う際も、やはりusing文を利用します。慣れれば、この書き方は余計なオブジェクトの破棄など書く必要がなくとても楽ちんですよ。
変数 = new StreamReader
( ファイルを示すもの );
こうしてインスタンスを作成し、そこから必要に応じてメソッドを呼び出してテキストを読み込んでいきます。読み込むためのメソッドはいくつかのものが用意されています。
・1文字だけ読み込む
int 変数 = 《StreamReader》.Read();ファイルから1文字だけを読み込み返します。返される値はint型ですが、これはつまりchar値ということです。
・指定した範囲を読み込む
int 変数 = 《StreamReader》.Read( char配列 , 開始位置 , 文字数 );ファイルから指定の範囲を読み込みます。第1引数には、値を保管するためのchar配列を用意します。そして第2引数に開始位置(インデックス番号)、第3引数に読み込む文字数を指定します。これで、指定の範囲のテキストを読み込んで、char配列に入れます。返値は読み込んだ文字数になります。
・改行コードまで読み込む
String 変数 = 《StreamReader》.ReadLine();現在読み込まれている位置から次の改行コードのある場所までを読み込んで返します。1行ずつ(正確には1段落ずつ)テキストを読み込むのに使います。もう読み込むテキストがない場合はnullを返します。
・最後まで読み込む
String 変数 = 《StreamReader》.ReadToEnd();現在の読み込み位置からファイルの末尾までをまとめて読み込んで返します。これもテキストがない場合はnullを返します。
基本的に、「1行ずつ読み込むならReadLine、まとめて全部読むならReadToEnd」と覚えておきましょう。この2つがもっとも頻繁に使うものになるはずです。ReadToEndは扱いが簡単ですから、ReadLineを使ったサンプルを下にあげておきましょう。EXEファイルのある場所から「data.txt」というファイルを開き、1行ずつテキストを読み込んで、それを加工してTextBoxに表示させます。
このStreamReaderを使う際も、やはりusing文を利用します。慣れれば、この書き方は余計なオブジェクトの破棄など書く必要がなくとても楽ちんですよ。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
using System; using System.Drawing; using System.IO; using System.Windows.Forms; namespace MyFrmApp { public class MyForm : Form { private Label label; private TextBox box; private Button btn; public MyForm() { this.Width = 300; this.Height = 250; setupControls(); } public void setupControls() { label = new Label(); label.Text = "type text:"; label.Font = new Font("Geneva",12,FontStyle.Regular); label.Height = 30; label.Width = 300; this.Controls.Add(label); box = new TextBox(); box.Multiline = true; box.Width = 225; box.Height = 100; box.Top = 50; box.Left = 25; this.Controls.Add(box); btn = new Button(); btn.Text = "click"; btn.Height = 30; btn.Width = 100; btn.Top = 160; btn.Left = 100; btn.Click += btn_Click; this.Controls.Add(btn); } private void btn_Click(object sender, System.EventArgs e) { using (StreamReader reader = new StreamReader("data.txt")) { box.Text = reader.ReadToEnd(); } } } }
※関連コンテンツ