.NET TIPS

ファイルにテキストを書き込むには?[C#、VB]

デジタルアドバンテージ 一色 政彦
2007/11/08

 「TIPS:テキスト・ファイルの内容を読み込むには?」では、テキスト・ファイルに記述されたテキスト内容を読み込む方法を紹介している。本TIPSではこれとは逆の処理、つまりテキスト・ファイルにテキスト内容を書き込む方法を紹介する。

ファイルにテキストを書き込む最も基本的な方法

 テキスト・ファイルに内容を書き込む手順は、基本的に次の3ステップになる。

(1)テキスト・ファイルを開く、もしくは作成する
(2)テキスト内容を書き込む
(3)テキスト・ファイルを閉じる

 「(1)テキスト・ファイルを開く、もしくは作成する」の最も基本的な方法は、StreamWriterクラス(System.IO名前空間)のコンストラクタを使うことだ(読み込みに利用するStreamReaderクラスとは違うことに注意)。

 コンストラクタの第1パラメータにはファイルのパス名を指定し、第2パラメータにはtrueかfalseを指定する。trueの場合、既存のテキスト内容がすべて残されたまま、その末尾にテキスト内容が追記される。falseの場合、いったん既存の内容が完全に削除されてから、新たにテキスト内容が書き込まれる。第3パラメータにはテキスト・ファイルの文字エンコードとしてEncodingクラス(System.Text名前空間)のオブジェクトを指定する(Encodingオブジェクトの取得方法については「TIPS:Encodingクラスで扱えるエンコーディング名は?」を参考にされたい)。なお、テキスト・ファイルが存在しない場合は、自動的にファイルを作成してくれる。

 次のコードは、実際にStreamWriterクラスのコンストラクタを呼び出すコード例である。コード中の「sjisEnc」はEncodingオブジェクトを表す。

StreamWriter writer =
  new StreamWriter(@"C:\Test.txt", true, sjisEnc);
Dim writer As New StreamWriter("C:\Test.txt", True, sjisEnc)
StreamWriterクラスのコンストラクタの呼び出し例(上:C#、下:VB)

 VB8(=VB 2005)では、このStreamWriterクラスのコンストラクタ以外にも「My.Computer.FileSystem.OpenTextFileWriterメソッド」(My機能)も利用できる。このメソッドのパラメータは、StreamWriterクラスのコンストラクタとまったく同じで、具体的には次のようなコードになる。

Dim writer As StreamWriter = My.Computer.FileSystem.OpenTextFileWriter("C:\Test.txt", True, sjisEnc)

 「(2)テキスト内容を書き込む」を行うには、StreamWriterオブジェクトのWriteLineメソッドもしくはWriteメソッドを呼び出せばよい。どちらもパラメータに指定された文字列をファイルに書き出す機能を持つ。違いは、WriteLineメソッドは出力した文字列の最後に改行(=行終端記号。既定では「\r\n」)を挿入することだ。

 最後に「(3)テキスト・ファイルを閉じる」ではStreamWriterオブジェクトのCloseメソッドを呼び出す。Closeメソッドの代わりに、C#のusingステートメント(参考:「TIPS:確実な終了処理を行うには?」)や、VB8で導入されたUsingステートメント(参考:「Visual Basic 2005 ここが便利!:第5回 Usingステートメントで簡単、確実にファイルをクローズ」)を使ってもよい。

 次のコードは、ここまでの説明に従って記述したサンプル・プログラムである。

using System.Text;
using System.IO;

class Program
{
  static void Main(string[] args)
  {
    Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
    StreamWriter writer =
      new StreamWriter(@"C:\Test.txt", true, sjisEnc);
    writer.WriteLine("テスト書き込みです。");
    writer.Close();
  }
}
Imports System.Text
Imports System.IO

Module Module1

  Sub Main()
    Dim sjisEnc As Encoding = Encoding.GetEncoding("Shift_JIS")
    Dim writer As New StreamWriter("C:\Test.txt", True, sjisEnc)
    writer.WriteLine("テスト書き込みです。")
    writer.Close()
  End Sub

End Module
テキスト・ファイルに内容を書き込むサンプル・プログラム(上:C#、下:VB)

 このサンプル・プログラムを実行すると、「C:\Test.txt」ファイルの末尾に「テスト書き込みです。」というテキスト内容がShift-JISエンコードで追加される。StreamWriterクラスの第2パラメータにtrueを指定しているので、2回目以降の実行では既存の「C:\Test.txt」ファイルの末尾にテキスト内容がどんどん追記されていくことを確認できる。End of Article

カテゴリ:クラス・ライブラリ 処理対象:テキスト・ファイル
使用ライブラリ:StreamWriterクラス(System.IO名前空間)
使用ライブラリ:Encodingクラス(System.Text名前空間)
関連TIPS:テキスト・ファイルの内容を読み込むには?
関連TIPS:Encodingクラスで扱えるエンコーディング名は?
関連TIPS:確実な終了処理を行うには?

この記事と関連性の高い別の.NET TIPS
テキスト・ファイルの内容を簡単に書き込むには?
テキスト・ファイルの内容を簡単に読み込むには?
オープン中のファイルにアクセスするには?
テキスト・ファイルの内容を読み込むには?
Console.WriteLineの出力をファイルに書き込むには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

目立つ! 読まれる! ブログを作る4つのポイント
ブランドの認知度向上に向けて、ブログを活用している企業は多い。だが実際、あまたのブ...

VOYAGE GROUP、東京工業大学と産学連携 ―― アドテクノロジー分野のビッグデータ活用を共同研究
VOYAGE GROUPは4月17日、東京工業大学と産学連携し、アドテクノロジー分野におけるビッグ...

日本のメディアが進む道 ―― 朝日新聞メディアラボ、東洋経済オンライン、NHKのメディア戦略から読み解く
メディアは生き残れるのかといった議論が活発な昨今。テレビや新聞、雑誌などのマスメデ...