ここではStreamReaderクラスを使ってテキストファイルを読み込む方法について紹介します。

StreamReaderクラスとは

System.IO名前空間にあるStreamReaderクラスを使用することで、テキストファイルのデータを1行ずつ読み込んだり、すべて読み込んだりすることができます。

以下はStreamReaderクラスのデータを読み込むためのメソッドです。

メソッド説明
ReadLine現在のストリームから1行分の文字を読み取り、そのデータを文字列として返します。
ReadLineAsync現在のストリームから非同期的に1行分の文字を読み取り、そのデータを文字列として返します。
ReadToEndストリームの現在位置から末尾までのすべての文字を読み込みます。
ReadToEndAsync現在位置からストリームの末尾まですべての文字を非同期的に読み取り、1 つの文字列として返します。


構文

StreamReader(ファイルパス, 文字エンコーディング)


StreamReaderクラスでは、第2引数に文字エンコーディングを指定することができます。指定されていない場合は UTF-8 エンコードに設定されます。

以下は文字エンコーディングの指定例です。

' UTF-8
System.Text.Encoding.UTF8
System.Text.Encoding.GetEncoding("utf-8")

' Unicode
System.Text.Encoding.Unicode

' 日本語シフトJIS
System.Text.Encoding.GetEncoding("Shift_JIS")
System.Text.Encoding.GetEncoding("EUC-JP")


テキストファイルを1行ずつ読み込む

次のサンプルプログラムでは、テキストファイルを1行ずつ読み込んで配列に格納し、最後に配列の要素を表示します。usingステートメントを使用することで、Closeメソッドを呼び出さずにシステムリソースを開放することができます。

Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main(args As String())
        Dim filePath As String = "C:\temp\test.txt"
        Dim encoding = System.Text.Encoding.UTF8
        Dim line As String = String.Empty
        Dim arr As New ArrayList

        Try
            ' StreamReaderのインスタンスを生成する
            Using strm As StreamReader = New StreamReader(filePath, encoding)

                While Not strm.EndOfStream
                    ' ファイルを1行読み込む
                    line = strm.ReadLine()
                    ' 読み込んだ1行を配列に格納する
                    arr.Add(line)
                End While
            End Using

            ' 配列の要素を表示する
            For Each s In arr
                Console.WriteLine(s)
            Next

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
End Module


テキストファイルをすべて読み込む

次のサンプルプログラムでは、テキストファイルをすべて読み込んで文字列変数に格納し、最後に文字列を表示します。

Imports System
Imports System.IO
Imports System.Text

Module Program
    Sub Main(args As String())
        Dim filePath As String = "C:\temp\test.txt"
        Dim encoding = System.Text.Encoding.UTF8
        Dim text As String = String.Empty

        Try
            ' StreamReaderのインスタンスを生成する
            Using strm As StreamReader = New StreamReader(filePath, encoding)
                text = strm.ReadToEnd()
            End Using

            ' 文字列を表示する
            Console.WriteLine(text)

        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
End Module


以上、StreamReaderクラスを使ってテキストファイルを読み込む方法について解説しました。