VB.NET ファイル出力 StreamWriter

今回は、VB.NETでファイル出力をする方法を紹介します。

実際仕事でよく作成するファイルは、TXTファイル、CSVファイル、LOGファイルを出力します。

ファイルを書き込みするには、System.IO.StreamWriterを使用します。

 

ちなにみテキストファイルの読み込みを行いたい場合は、こちらを参考にしてみてください。

それでは早速みてみましょう。

VB.NET ファイル出力

StreamWriter 使い方

始めに使用方法を見てみましょう。

System.IO.StreamWriter(ファイルパス,上書き,エンコード)

System.IO.StreamWriter(引数1,引数2,引数3)となります。
各引数を紹介します。

第1引数にファイルのパスとファイル名を設定します。

第2引数は、ファイルを上書きするのか、ファイルに行を追加するのか、どちらかを選択できます。
True:既存のファイルにそのまま、書き込んでいく。
False:既存のファイルを新しいファイルで上書きする。

第3引数は、文字コードの設定を行います。

サンプル

それでは、サンプルソースを見てみましょう。

Dim sw As New System.IO.StreamWriter("D:\hironimo.txt", False, System.Text.Encoding.GetEncoding("shift_jis"))
sw.WriteLine("こんにちは")
sw.WriteLine("こんばんは")
sw.Close()

第1引数:D:\hironimo.txt
第2引数:False(上書き)
第3引数:shift_jis

結果

Dドライブの直下に、「hironimo.txt」が出力されており、

こんにちは
こんばんは

と出力されていると思います。

サンプル2

第2引数をTrueにして出力してみましょう。

Dim sw As New System.IO.StreamWriter("D:\hironimo.txt", True, System.Text.Encoding.GetEncoding("shift_jis"))
sw.WriteLine("こんにちは")
sw.WriteLine("こんばんは")
sw.Close()

第1引数:D:\hironimo.txt
第2引数:True(追加)
第3引数:shift_jis

結果

先ほどと同じように、Dドライブの直下に、「hironimo.txt」が出力されており、

こんにちは
こんばんは
こんにちは
こんばんは

と出力されていると思います。サンプル1で出力したtxtに追加で、結果が出力されていますね。

第2引数をTrueにすると、追加されていくことをかくにんできました。

Logファイルを出力するときなどは、追加していくので、Trueで使用していきましょう。

 

まとめ

ファイル出力は、よく使用するので、書き方を覚えておきましょう。

Dim sw As New System.IO.StreamWriter("D:\hironimo.txt", True, System.Text.Encoding.GetEncoding("shift_jis"))

ログファイルを作成したいときは、第2引数をTrueにして、既存のファイルに追加していくように設定しましょう。

 

VB.NETの記事一覧

 

 

 

コメント一覧
  1. お世話になります。ACE ALADDINと申します。
    仕事でVisualStudio2019のVBでコードを書いているものです。
    いろいろなサイトを検索したのですが、ここのサイトが一番わかりやすかったです。
    もし、お手数でなければ以下の事についてご教授くだされば幸いです。

    現在作成してるアプリケーションにおいてTimer1、インターバル1000msの間隔にて、
    その時の時刻+Label1~Lable20のテキスト文字をLOG.CSVに書き込むログファイルを作成したい
    のですがこのサイトのサンプル2を参考に以下のコードで

    'Timer1開始
    Dim sw As New System.IO.StreamWriter("D:\log.csv", True, System.Text.Encoding.GetEncoding("shift_jis"))
    sw.WriteLine(DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss")+","+"Lable1.text+","+"Lable2.text+","~~~~Label20,True,enc)
    sw.Close()
    'Timer1終了

    上記のコードで問題はないでしょうか?
    この時に非同期で書き込む必要があるでしょうか?
    ログを取る時間は約6時間ほどです。
    お忙しいとは思いますが、ご教授願えれば幸いです。
    すみませんが、よろしくお願いいたします

    ACE ALADDIN

コメントを残す

VB.NETの関連記事
おすすめの記事