端くれプログラマの備忘録 C# [C#] テキストファイルを書き出す

[C#] テキストファイルを書き出す

テキストファイルの書き出しにはStreamWriterクラス (System.IO)を使う。

ファイルが存在すれば上書き

テキストの書き出しにはWriteやWriteLineメソッドを使う。

エラーが発生すると例外がスローされる。

using System.IO;
using System.Text;

try
{
    StreamWriter writer = new StreamWriter(@"C:\Temp\Test2.txt");
    writer.WriteLine("Hello World");
    writer.Write("How are you?" + writer.NewLine);
    writer.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

このサンプルのようにエンコーディング指定が無い場合は、デフォルトでUTF-8となる。もしShift JISで書き出したければエンコーディングの指定が必要(後述)。

既存ファイルへの追加書き込み

追加書き込みフラグ付きのコンストラクタを使うと、ファイルが存在する場合に上書きするか、ファイルの末尾に追加するかを指定できる。

using System.IO;
using System.Text;

try
{
    StreamWriter writer = new StreamWriter(@"C:\Temp\Test2.txt", true/*append*/);
    writer.WriteLine("Hello World");
    writer.Write("How are you?" + writer.NewLine);
    writer.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

Shift JISでの書き出し

UTF-8以外の文字コードで書き出すには、エンコーディングを指定する必要がある。

using System.IO;
using System.Text;

try
{
    StreamWriter writer = new StreamWriter(@"C:\Temp\Test2.txt", true/*append*/,
        Encoding.GetEncoding("Shift_JIS"));
    writer.WriteLine("Hello World");
    writer.Write("How are you?" + writer.NewLine);
    writer.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

参考サイト

StreamWriter クラス (System.IO)
http://msdn.microsoft.com/ja-jp/library/system.io.streamwriter(v=vs.110).aspx