.NET TIPS

Console.WriteLineの出力をファイルに書き込むには?[C#、VB]

デジタルアドバンテージ 遠藤 孝信
2010/04/22

 Consoleクラス(System名前空間)のWriteLineメソッドは、(コンソール・アプリケーションにおいて)画面に文字列を出力するための基本的なメソッドで、C言語のprintf関数に相当するものだ。

 本稿ではConsole.WriteLineメソッドの出力を、メソッドの呼び出しはそのままで、ファイルに出力する方法について説明する。

SetOutメソッドによる出力先(Outプロパティ)の設定

 そもそも、ConsoleクラスのWriteLineメソッドは、同じくConsoleクラスのOutプロパティに設定されているTextWriterオブジェクトに対して、文字列を書き込むという動作を行う。既定では、そのTextWriterオブジェクトの出力先は標準出力(つまりは画面)である。

 Outプロパティは読み取り専用の静的プロパティだが、それを変更するためのSetOutメソッドが用意されており、任意のTextWriterオブジェクトを指定できる。つまり、WriteLineメソッドの呼び出しより前のタイミングで、ファイルに対するTextWriterオブジェクトを作成し、それをSetOutメソッドで設定しておけばよい。

 以下のサンプル・プログラムでは、TextWriterクラス(System.IO名前空間)の派生クラスであるStreamWriterクラスにより、ファイル(text.txt)に対するTextWriterオブジェクトを作成し、それをSetOutメソッドにより、Outプロパティに設定している。これによりWriteLineメソッドの出力はすべて、text.txtに書き込まれる。

// SetOutText.cs

using System;
using System.IO;

class Program {
  static void Main() {

    StreamWriter sw = new StreamWriter(
      "test.txt", // 出力先ファイル名
      true, // 追加書き込み
      System.Text.Encoding.GetEncoding("Shift_JIS")); // 文字コード

    Console.SetOut(sw); // 出力先(Outプロパティ)を設定

    Console.WriteLine("hello world!");

    sw.Dispose(); // ファイルを閉じてオブジェクトを破棄
  }
}

// コンパイル方法:csc SetOutText.cs
' SetOutText.vb

Imports System
Imports System.IO

Class Program
  Shared Sub Main()

    Dim sw As New StreamWriter("test.txt", true, _
                    System.Text.Encoding.GetEncoding("Shift_JIS"))

    Console.SetOut(sw) ' 出力先(Outプロパティ)を設定

    Console.WriteLine("hello world!")

    sw.Dispose() ' ファイルを閉じてオブジェクトを破棄
  End Sub
End Class

' コンパイル方法:vbc SetOutText.vb
Console.WriteLineの出力をファイルに書き込むサンプル・プログラム(上:C#、下:VB)

 なお、StreamWriterクラスは内部でバッファリングを行うため、出力は即座にファイルへ書き込まれるとは限らない。強制的にファイルへの書き込みを行うには、Flushメソッドを呼び出せばよい。End of Article

カテゴリ:クラス・ライブラリ 処理対象:テキスト・ファイル
使用ライブラリ:Consoleクラス(System名前空間)
使用ライブラリ:TextWriterクラス(System.IO名前空間)
使用ライブラリ:StreamWriterクラス(System.IO名前空間)

この記事と関連性の高い別の.NET TIPS
LINQ to SQLのログ出力をVisual Studioの[出力]ウィンドウに出力するには?
LINQ to SQLにより生成されるSQL文を確認するには?
テキストファイルの内容を非同期的に書き込むには?[C#/VB、.NET 4.5]
VS.NETでデバッグ・メッセージを出力するには?
ファイルにテキストを書き込むには?[C#、VB]
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH