VB.NETで文字コード(エンコーディング)を指定して、テキストファイルに書き込む方法です。
CSVファイルに書き込み方法もご紹介します。
IO.StreamWriterクラス
ファイルへの書き込みストリームは、System.IO.StreamWriter
クラスで定義されています。
StreamWriter
クラスのWrite()
で、文字列を書き込むことができます。
' ファイルに書き込む文字列
Dim txt As String = Me.TextBox1.text
' エンコーディング
Dim enc_sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
Dim sw As New System.IO.StreamWriter("C:\test1.txt", False, enc_sjis)
sw.Write(txt)
sw.Close()
StreamWriter
クラスは、使い終わったら必ず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")
Using sw As New System.IO.StreamWriter("C:\test1txt", False, enc_sjis)
sw.Write(txt)
End Using
文字コード(エンコーディング)について
文字コード(エンコーディング)は、以下のように取得できます。
Shift-JIS
Dim enc_sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("sjis")
UTF8
Dim enc_utf8 As System.Text.Encoding = System.Text.Encoding.UTF8
EUC
Dim enc_euc As System.Text.Encoding = System.Text.Encoding.GetEncoding("euc-jp")
CSVをファイルに書き込むには
CSVは、テキストファイルと同様に書き込みます。
' CSVファイルに書き込むデータ
Dim data(,) As String = {
{"社員1", "部署1", "電話番号1"},
{"社員2", "部署2", "電話番号2"},
{"社員3", "部署3", "電話番号3"},
{"社員4", "部署4", "電話番号4"}
}
' エンコーディング
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
Dim sw As New System.IO.StreamWriter("C:\test1.txt", False, enc)
For i = 0 To data.GetLength(0) - 1
sw.Write(data(i, 0) & ",")
sw.Write(data(i, 1) & ",")
sw.Write(data(i, 2))
sw.WriteLine()
Next
sw.Close()
社員1,部署1,電話番号1
社員2,部署2,電話番号2
社員3,部署3,電話番号3
社員4,部署4,電話番号4
StreamWriter
クラスのWriteLine()
は、改行コードを書き込みます。
まとめ
以上、【VB.NET】文字コードを指定して、テキストファイルに書き込む、でした。
よく出てくる処理なので、覚えておくと良いですね。