Console.SetOut Method
.NET Framework 1.1
Sets the Out property to the specified TextWriter.
[Visual Basic] Public Shared Sub SetOut( _ ByVal newOut As TextWriter _ ) [C#] public static void SetOut( TextWriter newOut ); [C++] public: static void SetOut( TextWriter* newOut ); [JScript] public static function SetOut( newOut : TextWriter );
Parameters
- newOut
- A TextWriter stream that is the new standard output.
Exceptions
| Exception Type | Condition |
|---|---|
| ArgumentNullException | newOut is a null reference (Nothing in Visual Basic). |
| SecurityException | The caller does not have the required permission. |
Remarks
By default, the Out property is set to the standard output stream.
A StreamWriter that encapsulates a FileStream can be used to send output to a file. For example:
[C#]
Console.WriteLine("Hello World");
FileStream fs1 = new FileStream("Test.txt", FileMode.Create);
// First, save the standard output.
TextWriter tmp = Console.Out;
StreamWriter sw1 = new StreamWriter(fs1);
Console.SetOut(sw1);
Console.WriteLine("Hello file");
Console.SetOut(tmp);
Console.WriteLine("Hello World");
sw1.Close(); Example
The following code sample illustrates the use of SetOut:
[Visual Basic] Public Class InsertTabs Private Const tabSize As Integer = 4 Private Const usageText As String = "Usage: INSERTTABS inputfile.txt outputfile.txt" 'Entry point which delegates to C-style main Private Function Public Overloads Shared Sub Main() System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs()) End Sub Overloads Public Shared Function Main(args() As String) As Integer Dim writer As StreamWriter = Nothing If args.Length < 3 Then Console.WriteLine(usageText) Return 1 End If Try writer = New StreamWriter(args(2)) Console.SetOut(writer) Console.SetIn(New StreamReader(args(1))) Catch e As IOException Dim errorWriter As TextWriter = Console.Error errorWriter.WriteLine(e.Message) errorWriter.WriteLine(usageText) Return 1 End Try Dim line As String line = Console.ReadLine() While Not line Is Nothing Dim newLine As String = line.Replace("".PadRight(tabSize, " "c), ControlChars.Tab) Console.WriteLine(newLine) line = Console.ReadLine() End While writer.Close() ' Recover the standard output stream so that a ' completion message can be displayed. Dim standardOutput As New StreamWriter(Console.OpenStandardOutput()) standardOutput.AutoFlush = True Console.SetOut(standardOutput) Console.WriteLine("INSERTTABS has completed the processing of {0}.", args(0)) Return 0 End Function 'Main End Class 'InsertTabs [C#] public class InsertTabs { private const int tabSize = 4; private const string usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt"; public static int Main(string[] args) { StreamWriter writer = null; if (args.Length < 2) { Console.WriteLine(usageText); return 1; } try { writer = new StreamWriter(args[1]); Console.SetOut(writer); Console.SetIn(new StreamReader(args[0])); } catch(IOException e) { TextWriter errorWriter = Console.Error; errorWriter.WriteLine(e.Message); errorWriter.WriteLine(usageText); return 1; } string line; while ((line = Console.ReadLine()) != null) { string newLine = line.Replace(("").PadRight(tabSize, ' '), "\t"); Console.WriteLine(newLine); } writer.Close(); // Recover the standard output stream so that a // completion message can be displayed. StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput()); standardOutput.AutoFlush = true; Console.SetOut(standardOutput); Console.WriteLine("INSERTTABS has completed the processing of {0}.", args[0]); return 0; } } [C++] int main() { String* args[] = Environment::GetCommandLineArgs(); const int tabSize = 4; String* usageText = S"Usage: INSERTTABS inputfile.txt outputfile.txt"; StreamWriter* writer = 0; if (args->Length < 3) { Console::WriteLine(usageText); return 1; } try { writer = new StreamWriter(args[2]); Console::SetOut(writer); Console::SetIn(new StreamReader(args[1])); } catch(IOException* e) { TextWriter* errorWriter = Console::Error; errorWriter->WriteLine(e->Message); errorWriter->WriteLine(usageText); return 1; } String* line; while ((line = Console::ReadLine()) != 0) { String* newLine = line->Replace((S"")->PadRight(tabSize, ' '), S"\t"); Console::WriteLine(newLine); } writer->Close(); // Recover the standard output stream so that a // completion message can be displayed. StreamWriter* standardOutput = new StreamWriter(Console::OpenStandardOutput()); standardOutput->AutoFlush = true; Console::SetOut(standardOutput); Console::WriteLine(S"INSERTTABS has completed the processing of {0}.", args[1]); return 0; } [JScript] const tabSize = 4; const usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt"; var writer : StreamWriter = null; var args = Environment.GetCommandLineArgs(); if (args.Length != 3) { Console.WriteLine(usageText); Environment.Exit(1); } try { writer = new StreamWriter(args[2]); Console.SetOut(writer); Console.SetIn(new StreamReader(args[1])); } catch(e : IOException) { var errorWriter = Console.Error; errorWriter.WriteLine(e.Message); errorWriter.WriteLine(usageText); Environment.Exit(1); } var line; while ((line = Console.ReadLine()) != null) { var newLine = line.Replace(("").PadRight(tabSize, ' '), "\t"); Console.WriteLine(newLine); } writer.Close(); // Recover the standard output stream so that a // completion message can be displayed. var standardOutput = new StreamWriter(Console.OpenStandardOutput()); standardOutput.AutoFlush = true; Console.SetOut(standardOutput); Console.WriteLine("INSERTTABS has completed the processing of {0}.", args[0]);
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, Common Language Infrastructure (CLI) Standard
.NET Framework Security:
- SecurityPermissionFlag for calling unmanaged code. Associated enumeration: SecurityPermissionFlag.UnmanagedCode
See Also
Console Class | Console Members | System Namespace | TextWriter | Out