Console.OpenStandardOutput Метод

Определение

Получает стандартный выходной поток.

Перегрузки

OpenStandardOutput()

Получает стандартный выходной поток.

OpenStandardOutput(Int32)

Получает стандартный выходной поток, для которого установлен заданный размер буфера.

OpenStandardOutput()

Получает стандартный выходной поток.

public static System.IO.Stream OpenStandardOutput ();

Возвращаемое значение

Stream

Стандартный выходной поток.

Примеры

В следующем примере показано использование метода OpenStandardOutput. Он заменяет 4 последовательных пробела в строке символом табуляции. Чтобы запустить его, необходимо указать два аргумента командной строки. Первый аргумент — это имя существующего текстового файла, в который требуется перенаправить стандартный входной поток. Второй аргумент — это имя файла, в который требуется перенаправить стандартный выходной поток. Не требуется, чтобы этот файл существовал. Если да, его содержимое будут перезаписано.

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;
    }
}

Комментарии

Этот метод можно использовать для повторного запроса стандартного выходного потока после его изменения методом SetOut .

См. также раздел

Применяется к

.NET 7 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

OpenStandardOutput(Int32)

Получает стандартный выходной поток, для которого установлен заданный размер буфера.

public static System.IO.Stream OpenStandardOutput (int bufferSize);

Параметры

bufferSize
Int32

Этот параметр ни на что не влияет, но его значение должно быть больше или равно нулю.

Возвращаемое значение

Stream

Стандартный выходной поток.

Исключения

bufferSize меньше или равно нулю.

Примеры

В следующем примере показано использование метода OpenStandardOutput. Он заменяет 4 последовательных пробела в строке символом табуляции. Чтобы запустить его, необходимо указать два аргумента командной строки. Первый аргумент — это имя существующего текстового файла, в который требуется перенаправить стандартный входной поток. Второй аргумент — это имя файла, в который требуется перенаправить стандартный выходной поток. Не требуется, чтобы этот файл существовал. Если да, его содержимое будут перезаписано.

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;
    }
}

Комментарии

Этот метод можно использовать для повторного запроса стандартного выходного потока после его изменения методом SetOut .

См. также раздел

Применяется к

.NET 7 және басқа нұсқалар
Өнім Нұсқалар
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1