Console.SetIn(TextReader) Console.SetIn(TextReader) Console.SetIn(TextReader) Console.SetIn(TextReader) Method

Определение

Присваивает свойству In указанный объект TextReader.Sets the In property to the specified TextReader object.

public:
 static void SetIn(System::IO::TextReader ^ newIn);
public static void SetIn (System.IO.TextReader newIn);
static member SetIn : System.IO.TextReader -> unit
Public Shared Sub SetIn (newIn As TextReader)

Параметры

newIn
TextReader TextReader TextReader TextReader

Поток, являющийся новым стандартным входным потоком.A stream that is the new standard input.

Исключения

Свойство newIn имеет значение null.newIn is null.

У вызывающего объекта отсутствует необходимое разрешение.The caller does not have the required permission.

Примеры

В следующем примере показано использование метода SetIn.The following example illustrates the use of the SetIn method. Он заменяет 4 последовательных пробела в строке символом табуляции.It replaces four consecutive space characters in a string with a tab character. Чтобы запустить его, необходимо указать два аргумента командной строки.To run it, you must supply two command line arguments. Первый аргумент — это имя существующего текстового файла, в который требуется перенаправить стандартный входной поток.The first is the name of an existing text file to redirect the standard input stream to. Второй аргумент — это имя файла, в который требуется перенаправить стандартный выходной поток.The second is the name of a file to redirect the standard output stream to. Не требуется, чтобы этот файл существовал.This file need not exist. Если да, его содержимое будут перезаписано.If it does, its contents will be overwritten.

using namespace System;
using namespace System::IO;

int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   const int tabSize = 4;
   String^ usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt";
   StreamWriter^ writer = nullptr;
   if ( args->Length < 3 )
   {
      Console::WriteLine( usageText );
      return 1;
   }

   try
   {
      // Attempt to open output file.
      writer = gcnew StreamWriter( args[ 2 ] );
      // 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( gcnew 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()) != nullptr )
   {
      String^ newLine = line->Replace( ((String^)"")->PadRight( tabSize, ' ' ), "\t" );
      Console::WriteLine( newLine );
   }

   writer->Close();
   
   // Recover the standard output stream so that a 
   // completion message can be displayed.
   StreamWriter^ standardOutput = gcnew StreamWriter( Console::OpenStandardOutput() );
   standardOutput->AutoFlush = true;
   Console::SetOut( standardOutput );
   Console::WriteLine( "INSERTTABS has completed the processing of {0}.", args[ 1 ] );
   return 0;
}

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

Комментарии

По умолчанию In для свойства задан стандартный входной поток.By default, the In property is set to the standard input stream.

Объект StreamReader , инкапсулирующий FileStream , может использоваться для получения входных данных из файла.A StreamReader that encapsulates a FileStream can be used to receive input from a file.

Безопасность

SecurityPermission
для вызова неуправляемого кода.for calling unmanaged code. Связанное перечисление:UnmanagedCodeAssociated enumeration: UnmanagedCode

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

Дополнительно