[Tips][ファイル操作] テキストファイルを作成する(2) ファイルの上書きと追加書き込み

StreamWriteクラスのコンストラクターStreamWriter(String, Boolean)を使用すると、ファイルの上書きや追加書き込みを制御することができます。

コンストラクタの第1引数は作成するファイルのパスを指定します。

第2引数はデータをファイルの末尾に追加するかどうかを判断するものです。ファイルが存在する場合にTrueを指定するとデータがファイルの末尾に追加され、Falseを指定するとファイルを上書きします。ファイルが存在しない場合には新しいファイルが作成されます。

下記は既存のファイルにデータを追記書き込みする例です。

VBの例

'追記書き込みできるようにする
Dim sw As New IO.StreamWriter("C:\Work\Test.txt", True)

'テキストファイルに文字列を書き込む
sw.WriteLine("AAA")
sw.WriteLine("BBB")
sw.Write("CCC")
sw.WriteLine("DDD")

'StreamWriterを閉じる
sw.Close()

C#の例

// 追記書き込みできるようにする
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Work\Test.txt", true);

// テキストファイルに文字を書き込む
sw.WriteLine("AAA");
sw.WriteLine("BBB");
sw.Write("CCC");
sw.WriteLine("DDD");

// StreamWriterを閉じる
sw.Close();

[Tips][ファイル操作] テキストファイルを作成する(1)

今回からファイル操作について取り上げます。


テキストファイルを作成するにはSystem.IO名前空間にあるStreamWriterクラスを使用します。

StreamWriterクラスは多くのコンストラクタを持っているですが、まずはファイルパスを指定してテキストファイルを作成する方法について説明します。

下記のようにコンストラクタにファイルパスを指定すると、既定のエンコーディング(UTF-8)でテキストファイルが作成されます。

VBの例

'ファイルパスを指定してStreamWriterクラスのインスタンスを作成する
Dim sw As New IO.StreamWriter("C:\Work\Test.txt")

C#の例

// ファイルパスを指定してStreamWriterクラスのインスタンスを作成する
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Work\Test.txt");

作成したテキストファイルに文字を書き込むにはWriteLineメソッドWriteメソッドを使用します。

WriteLineメソッドは1行書き込みをするメソッドであり、引数に指定した文字列をファイルに書き込んだ後に自動で改行コードを付加します。

また、Writeメソッドは引数で指定した文字列をファイルに書き込みますが改行コードは付加しません。

VBの例

'テキストファイルに文字列を書き込む
sw.WriteLine("AAA")
sw.WriteLine("BBB")
sw.Write("CCC")
sw.WriteLine("DDD")

C#の例

// テキストファイルに文字を書き込む
sw.WriteLine("AAA");
sw.WriteLine("BBB");
sw.Write("CCC");
sw.WriteLine("DDD");

必要な文字列を書き込み終わったらCloseメソッドでストリームを閉じます。

VBの例

'StreamWriterを閉じる
sw.Close()

C#の例

// StreamWriterを閉じる
sw.Close();

まとめると、コードは下記のようになります。

VBの例

'ファイルパスを指定してStreamWriterクラスのインスタンスを作成する
Dim sw As New IO.StreamWriter("C:\Work\Test.txt")

'テキストファイルに文字列を書き込む
sw.WriteLine("AAA")
sw.WriteLine("BBB")
sw.Write("CCC")
sw.WriteLine("DDD")

'StreamWriterを閉じる
sw.Close()

C#の例

// ファイルパスを指定してStreamWriterクラスのインスタンスを作成する
System.IO.StreamWriter sw = new System.IO.StreamWriter(@"C:\Work\Test.txt");

// テキストファイルに文字を書き込む
sw.WriteLine("AAA");
sw.WriteLine("BBB");
sw.Write("CCC");
sw.WriteLine("DDD");

// StreamWriterを閉じる
sw.Close();