TotalTech

フリーランスのプログラマーが、技術情報・ガジェット・仕事術について書いてゆきます。資料価値の高い記事を目指しています。コーヒー好きです。

TotalTech

【VB.NET】文字コードを指定して、テキストファイルを読み込む

テキストファイル読み込み

今回は、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()して下さい。

UsingEnd 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文字コードを指定して、テキストファイルを読み込む、でした。

テキストファイルの書き込み・読み込みは、よく出てくる処理ですね。

テキストファイルの書き込みについては