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

StreamWriterクラスとは

System.IO名前空間にあるStreamWriterクラスを使用することで、テキストファイルにデータを書き込むことができます。

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

メソッド説明
Writeストリームに文字列を書き込みます。
WriteAsync非同期でストリームに文字列を書き込みます。
WriteLine文字列とそれに続く改行をストリームに書き込みます。
WriteLineAsync非同期で文字列とそれに続く改行をストリームに書き込みます。


構文

StreamWriter(ファイルパス, 上書きする/追加する, 文字エンコーディング)


StreamReaderクラスでは、第2引数に既存のファイルに行を追加するのか、既存のファイルに上書きするのかを指定できます。
既存のファイルに行を追加する場合はTrue、 既存のファイルに上書きする場合はFalseを指定します。

また、第3引数に文字エンコーディングを指定することができます。指定されていない場合は 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")


テキストファイルに文字列を書き込む

次のサンプルプログラムでは、改行コードを含む文字列をテキストファイルに書き込みます。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 As Encoding = System.Text.Encoding.UTF8
        Dim text As String = "123" & ControlChars.CrLf _
                           & "ABC" & ControlChars.CrLf _
                           & "あいう"

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

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


テキストファイルに文字列を1行ずつ書き込む

次のサンプルプログラムでは、配列の要素の文字列を1行ずつテキストファイルに書き込みます。

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 As Encoding = System.Text.Encoding.UTF8
        Dim arr() As String = {"123", "ABC", "あいう"}

        Try
            ' StreamWriterのインスタンスを生成する
            Using strm As StreamWriter = New StreamWriter(filePath, False, encoding)
                 ' 配列の要素を書き込む
                For Each s In arr
                    strm.WriteLine(s)
                Next
            End Using

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


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