今回は、VB.NETで文字コード(エンコーディング)を指定して、テキストファイルを読み込む方法です。
CSVファイルの読み込みにも使えます。
IO.StreamReaderクラス
ファイルの最後まで読み込む
ファイルからの読み込みストリームは、System.IO.StreamReader
クラスで定義されています。
StreamWriter
クラスのReadToEnd()
で、ファイルの最後まで読み込むことができます。
' エンコーディング
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
Dim sr As New System.IO.StreamReader("C:\test1.txt", enc)
Dim txt As String = sr.ReadToEnd()
sr.Close()
StreamReader
クラスは、使い終わったら必ずClose()
して下さい。
Using
~End Using
を使って、次のように書くこともできます。この場合、End Using
の際にCloseされるので、明示的にClose()
を呼び出す必要はありません。
' ファイルに書き込む文字列
Dim txt As String = Me.TextBox1.Text
' エンコーディング
Dim enc_sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
Dim txt As String = ""
Using sr As New System.IO.StreamReader("C:\test1.txt", enc)
txt = sr.ReadToEnd()
End Using
1行ずつ読み込む
StreamWriter
クラスのReadLine()
で1行ずつ読み込むことができます。
ファイルの終端まで達したかどうかは、EndOfStream
プロパティで取得できます。
' エンコーディング
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
Dim sr As New System.IO.StreamReader("C:\test1.txt", enc)
Do Until sr.EndOfStream
Console.WriteLine(sr.ReadLine())
Loop
sr.Close()
文字コード(エンコーディング)について
文字コード(エンコーディング)は、以下のように取得できます。
Shift-JIS
Dim enc_sjis = System.Text.Encoding.GetEncoding("sjis")
UTF8
Dim enc_utf8 = System.Text.Encoding.UTF8
EUC
Dim enc_euc = System.Text.Encoding.GetEncoding("euc-jp")
CSVをファイルを読み込むには
CSVは、テキストファイルと同様に読み込みます。
社員1,部署1,電話番号1
社員2,部署2,電話番号2
社員3,部署3,電話番号3
社員4,部署4,電話番号4
Dim data As New Generic.List(Of Generic.List(Of String))
' エンコーディング
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
Dim sr As New System.IO.StreamReader("C:\1.txt", enc)
Do Until sr.EndOfStream
Dim s As String = sr.ReadLine()
Dim data_line = New Generic.List(Of String)(s.Split(","))
data.Add(data_line)
Loop
sr.Close()
まとめ
以上、【VB.NET】文字コードを指定して、テキストファイルを読み込む、でした。
テキストファイルの書き込み・読み込みは、よく出てくる処理ですね。