DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

Console.Writeメソッドでファイルに出力する

既定では、Console.Writeメソッド(またはConsole.WriteLineメソッド)を呼び出すと、標準出力先(コンソールや出力ウィンドウ)に文字列が出力されます。しかし、Console.SetOutメソッドで出力ストリームを変更することにより、例えばファイルに出力できるようになります。

次の例では、Console.Writeでファイル"C:\test\1.txt"に出力されるように出力ストリームを変更しています。

VB.NET
コードを隠すコードを選択
'出力ファイルを指定して、StreamWriterオブジェクトを作成
Dim sw As New System.IO.StreamWriter("C:\test\1.txt")
'自動的にフラッシュされるようにする
sw.AutoFlush = True
'スレッドセーフラッパを作成
Dim tw As System.IO.TextWriter = System.IO.TextWriter.Synchronized(sw)
'Consoleの出力ストリームを変更する
Console.SetOut(tw)
C#
コードを隠すコードを選択
//出力ファイルを指定して、StreamWriterオブジェクトを作成
System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\test\\1.txt");
//自動的にフラッシュされるようにする
sw.AutoFlush = true;
//スレッドセーフラッパを作成
System.IO.TextWriter tw = System.IO.TextWriter.Synchronized(sw);
//Consoleの出力ストリームを変更する
Console.SetOut(tw);

出力ストリームを標準出力ストリームに戻るには、次のようにします。

VB.NET
コードを隠すコードを選択
'標準出力ストリームを作成
Dim standard As New System.IO.StreamWriter(Console.OpenStandardOutput())
'自動的にフラッシュされるようにする
standard.AutoFlush = True
'Consoleの出力ストリームを変更する
Console.SetOut(standard)
C#
コードを隠すコードを選択
//標準出力ストリームを作成
System.IO.StreamWriter standard = 
    new System.IO.StreamWriter(Console.OpenStandardOutput());
//自動的にフラッシュされるようにする
standard.AutoFlush = true;
//Consoleの出力ストリームを変更する
Console.SetOut(standard);

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。