ここでは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クラスを使ってテキストファイルを読み込む方法について解説しました。