どうも!リョクちゃです。
今回は、VB.Netで指定したテキストファイルを読み取って出力したり、
複数行にわたるテキストファイルを読み取ってコンボボックスに格納する手法を紹介します。
ちなみに前回はこちら
目次
準備編:テキストファイルを作成します
まずテキストファイルを読み取るにあたって、テキストファイルを作成しましょう。
下のようなテキストファイルをメモ帳(notepad)を使って作成します。
作成したら、プロジェクトのソリューションエクスプローラのbinフォルダをクリックします。
クリックしたら、Debugフォルダが表示されるので、
これを右クリックして、追加を選びます。
追加を選んだら、作成したテキストファイルを追加します。
追加されると、Debaugフォルダ内に表示がされます。
これで準備は完了です。
テキストファイルを読み取る
ボタンを押してテキストファイルを読み取るようにできるよう、
下のようなフォームを作成しましょう。
それでは、テキストファイルを読み取るコードを書いていきます。
テキストファイルを読み取る変数を作成
テキストファイルを読み取るには、System.IO.StreamReaderを使います。
※VisualBasic.Netで標準に搭載されているライブラリです。
1 2 3 4 5 6 7 8 9 10 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを読み込む変数の準備 Dim sr As System.IO.StreamReader = Nothing End Sub End Class |
これだけでは、使えないので次にインスタンスを作成します。
インスタンス: 変数srという箱にSystem.IO.StreamReaderを収めて、
実体として扱うような状態です。
イメージでいうと、憑依に近い感じですかね。
ですが、インスタンスを作成する前に
読み取るべきファイルが指定の場所にあるか確認します。
事前にファイルの存在を確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを読み込む変数の準備 Dim sr As System.IO.StreamReader = Nothing ' テキストファイルが存在するかチェック If System.IO.File.Exists("./sample.txt") Then ' テキストファイルがあれば処理を行う End If End Sub End Class |
ここでは、System.IO.File.Exists(“読み取りたいファイル名(パス含む)”)と記述することで、
ファイルの有無を確認しています。
この記述があるとないとで、プログラムの出来にも影響してきますので、
テキストファイル問わず外部のファイルを読み取る際には、
このような対策もしておくとよいでしょう。
それでは、インスタンスを作成していきます。
インスタンスを作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを読み込む変数の準備 Dim sr As System.IO.StreamReader = Nothing ' テキストファイルが存在するかチェック If System.IO.File.Exists("./sample.txt") Then ' テキストファイルがあれば処理を行う ' インスタンス作成 sr = New System.IO.StreamReader("./sample.txt") End If End Sub End Class |
sr = New System.IO.StreamReader(“読み取りたいファイル名(パス含む)”)と書き、
ファイルの場所をインスタンス作成時に変数に設定しています。
テキストファイルを読み取る
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを読み込む変数の準備 Dim sr As System.IO.StreamReader = Nothing ' テキストファイルが存在するかチェック If System.IO.File.Exists("./sample.txt") Then ' テキストファイルがあれば処理を行う ' インスタンス作成 sr = New System.IO.StreamReader("./sample.txt") ' テキストファイルを読み込む MessageBox.Show(sr.ReadLine) End If End Sub End Class |
sr.ReadLineと記述することで、読み取った内容をメッセージボックスで表示しています。
実際にボタンを押して、実行されるか確認しましょう。
下のような画面が表示されていれば成功です。
ここでは、テキストファイルから1行のみを読み取ることができました。
次で、複数行の読み取りを行い、コンボボックスへ読み取った値をいれていきます。
ファイルをすべて読み取り→コンボボックスへ
下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' テキストファイルを読み込む変数の準備 Dim sr As System.IO.StreamReader = Nothing ' テキストファイルが存在するかチェック If System.IO.File.Exists("./sample.txt") Then ' テキストファイルがあれば処理を行う ' インスタンス作成 sr = New System.IO.StreamReader("./sample.txt") ' テキストファイルを最後まで読み取り ' コンボボックスへそれぞれ入れていく While sr.Peek >= 0 Me.ComboBox1.Items.Add(sr.ReadLine) End While End If End Sub End Class |
While文の条件式にsr.Peek >= 0と書くことで、
ファイルの末尾まで1行ずつ読み取る処理をしています。
1行ずつの値はそれぞれコンボボックスに格納をしています。
実際に実行して、コンボボックスに値が入っているか確認してみましょう。
下のようになれば成功です。
まとめ
・こちらの書籍を参考にVB.Net勉強しています。