Console.SetOut(TextWriter) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define a Out propriedade para direcionar o TextWriter objeto.
public:
static void SetOut(System::IO::TextWriter ^ newOut);
public static void SetOut(System.IO.TextWriter newOut);
static member SetOut : System.IO.TextWriter -> unit
Public Shared Sub SetOut (newOut As TextWriter)
Parâmetros
- newOut
- TextWriter
Um gravador de texto a ser usado como a nova saída padrão.
Exceções
newOut é null.
O chamador não tem a permissão necessária.
Exemplos
O exemplo a seguir ilustra o uso do SetOut método. Ele substitui quatro caracteres de espaço consecutivos em uma cadeia de caracteres por um caractere de guia. Para executá-lo, você deve fornecer dois argumentos de linha de comando. O primeiro é o nome de um arquivo de texto existente para o qual redirecionar o fluxo de entrada padrão. O segundo é o nome de um arquivo para o qual redirecionar o fluxo de saída padrão. Esse arquivo não precisa existir. Se isso acontecer, seu conteúdo será substituído.
using System;
using System.IO;
public class InsertTabs
{
private const int tabSize = 4;
private const string usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt";
public static int Main(string[] args)
{
if (args.Length < 2)
{
Console.WriteLine(usageText);
return 1;
}
try
{
// Attempt to open output file.
using (var writer = new StreamWriter(args[1]))
{
using (var reader = new StreamReader(args[0]))
{
// Redirect standard output from the console to the output file.
Console.SetOut(writer);
// Redirect standard input from the console to the input file.
Console.SetIn(reader);
string line;
while ((line = Console.ReadLine()) != null)
{
string newLine = line.Replace(("").PadRight(tabSize, ' '), "\t");
Console.WriteLine(newLine);
}
}
}
}
catch(IOException e)
{
TextWriter errorWriter = Console.Error;
errorWriter.WriteLine(e.Message);
errorWriter.WriteLine(usageText);
return 1;
}
// 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 {args[0]}.");
return 0;
}
}
open System
open System.IO
let tabSize = 4
let usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt"
[<EntryPoint>]
let main args =
if args.Length < 2 then
Console.WriteLine usageText
1
else
try
// Attempt to open output file.
use reader = new StreamReader(args[0])
use writer = new StreamWriter(args[1])
// Redirect standard output from the console to the output file.
Console.SetOut writer
// Redirect standard input from the console to the input file.
Console.SetIn reader
let mutable line = Console.ReadLine()
while line <> null do
let newLine = line.Replace(("").PadRight(tabSize, ' '), "\t")
Console.WriteLine newLine
line <- Console.ReadLine()
// Recover the standard output stream so that a
// completion message can be displayed.
let standardOutput = new StreamWriter(Console.OpenStandardOutput())
standardOutput.AutoFlush <- true
Console.SetOut standardOutput
Console.WriteLine $"INSERTTABS has completed the processing of {args[0]}."
0
with :? IOException as e ->
let errorWriter = Console.Error
errorWriter.WriteLine e.Message
errorWriter.WriteLine usageText
1
Imports System.IO
Public Module InsertTabs
Private Const tabSize As Integer = 4
Private Const usageText As String = "Usage: INSERTTABS inputfile.txt outputfile.txt"
Public Function Main(args As String()) As Integer
If args.Length < 2 Then
Console.WriteLine(usageText)
Return 1
End If
Try
' Attempt to open output file.
Using writer As New StreamWriter(args(1))
Using reader As New StreamReader(args(0))
' Redirect standard output from the console to the output file.
Console.SetOut(writer)
' Redirect standard input from the console to the input file.
Console.SetIn(reader)
Dim line As String = Console.ReadLine()
While line IsNot Nothing
Dim newLine As String = line.Replace("".PadRight(tabSize, " "c), ControlChars.Tab)
Console.WriteLine(newLine)
line = Console.ReadLine()
End While
End Using
End Using
Catch e As IOException
Dim errorWriter As TextWriter = Console.Error
errorWriter.WriteLine(e.Message)
errorWriter.WriteLine(usageText)
Return 1
End Try
' 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 {args(0)}.")
Return 0
End Function
End Module
Comentários
Por padrão, a Out propriedade é definida como o fluxo de saída padrão.
Um StreamWriter que encapsula um FileStream pode ser usado para enviar saída para um arquivo. Por exemplo:
Console.WriteLine("Hello World");
FileStream fs = new FileStream("Test.txt", FileMode.Create);
// First, save the standard output.
TextWriter tmp = Console.Out;
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine("Hello file");
Console.SetOut(tmp);
Console.WriteLine("Hello World");
sw.Close();
Console.WriteLine "Hello World"
use fs = new FileStream("Test.txt", FileMode.Create)
// First, save the standard output.
let tmp = Console.Out
use sw = new StreamWriter(fs)
Console.SetOut sw
Console.WriteLine "Hello file"
Console.SetOut tmp
Console.WriteLine "Hello World"
Console.WriteLine("Hello World")
Dim fs As New FileStream("Test.txt", FileMode.Create)
' First, save the standard output.
Dim tmp as TextWriter = Console.Out
Dim sw As New StreamWriter(fs)
Console.SetOut(sw)
Console.WriteLine("Hello file")
Console.SetOut(tmp)
Console.WriteLine("Hello World")
sw.Close()
O objeto real retornado pode Out ser um wrapper sincronizado em torno do gravador de texto fornecido.