最終更新日 2006 年 6 月 1 日
サンプル コードのダウンロード (vbmigtips_AllText.msi, 491 KB)
※ このサンプルをインストールするには Visual Studio 2005 が必要です。
ファイル全体を読み込んだり書き出したりする際にも、ファイルのオープン、及び、クローズという手続きが不可欠です。そこで今回は、WriteAllText 、ReadAllText メソッドを用いて、オープンやクローズを意識することなく、ファイルを簡単に扱う方法を紹介します。
Visual Basic 6.0 でファイルの読み書きを行う場合、Get や Put 等を使う必要があります。これらのステートメントは柔軟性が不足していて、やはり、使う際には Open や Close というステートメントが不可欠でした。また、以前の Visual Basic .NET では StreamReader や StreamWriter クラスが使えるようになりましたが、これもやはり Close メソッドを使う必要がありました。以前の Visual Basic .NET でのファイルの読み書きの実装方法は以下のとおりです。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If System.IO.File.Exists(TextBox1.Text) Then
Dim srTest As System.IO.StreamReader = New System.IO.StreamReader(TextBox1.Text)
TextBox2.Text = srTest.ReadToEnd()
srTest.Close()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim srTest As System.IO.StreamWriter = New System.IO.StreamWriter(TextBox1.Text)
srTest.Write(TextBox2.Text)
srTest.Close()
End Sub リスト1
上記 (リスト1) の「Dim srTest As System.IO.StreamReader = New System.IO.StreamReader(TextBox1.Text)」では、 TextBox1 から文字列を取得し、その文字列の場所にあるファイルを開き、「TextBox2.Text = srTest.ReadToEnd()」でファイルを最後まで読み取り、TextBox2 に表示します。「srTest.Close()」で ファイルを閉じます。「Dim srTest As System.IO.StreamWriter = New System.IO.StreamWriter(TextBox1.Text)」では、 TextBox1 から文字列を取得し、その文字列の場所にあるファイルを開きます。「srTest.Write(TextBox2.Text)」で TextBox2 の文字列をファイルに書き出します。そして、「srTest.Close()」で ファイルを閉じます。
上記 (リスト1) を実装し、プロジェクトを実行すると、図1 が表示されます。
図 1
下部のテキストボックスに文字を入力し、上部のテキストボックスにファイル名を記入後、保存ボタンを押します。 (図2)
図 2
すると、図3のようなテキストファイルが作成されます。
図 3
図3 のファイルを読み込む場合、図3 のファイルの場所を指定し、読み込みボタンを押すと図2 のようにファイルの内容が表示されます。
表示されたファイル内容を図4 のように変更し、保存ボタンを押します。
図 4
すると、ファイルの内容も変更されます。 (図5)
図 5
一方、Visual Basic 2005 では、System.IO.File クラスの ReadAllText メソッドや WriteAllText メソッドを使うことができます。ReadAllText メソッドや WriteAllText メソッドを使うことにより、Open や Close というステートメントを使用する必要がなくなります。Visual Basic 2005 の ReadAllText メソッド、WriteAllText メソッドを使用方法は以下のとおりです (以下は、リスト1 を書き直したものです) 。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If My.Computer.FileSystem.FileExists(TextBox1.Text) Then
TextBox2.Text = System.IO.File.ReadAllText(TextBox1.Text)
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
System.IO.File.WriteAllText(TextBox1.Text, TextBox2.Text)
End Sub リスト2
上記 (リスト2) の「TextBox2.Text = System.IO.File.ReadAllText(TextBox1.Text)」では、 TextBox1 (上部のテキストボックス) から文字列を取得し、その文字列の場所にあるファイルを開き、ファイルを最後まで読み取ります。読み取ったデータを TextBox2 (下部のテキストボックス) に表示します。「System.IO.File.WriteAllText(TextBox1.Text, TextBox2.Text)」では、 TextBox1 から文字列を取得し、その文字列の場所にあるファイルを開き、 TextBox2 の文字列をファイルに書き出します。
このように、 ReadAllText メソッドや WriteAllText メソッドを使用することで、よりわかりやすい簡潔なコードの記述が可能となりました。