Console.ReadLine Console.ReadLine Console.ReadLine Console.ReadLine Method

정의

표준 입력 스트림에서 다음 줄의 문자를 읽습니다.Reads the next line of characters from the standard input stream.

public:
 static System::String ^ ReadLine();
public static string ReadLine ();
static member ReadLine : unit -> string
Public Shared Function ReadLine () As String

반환

입력 스트림의 다음 줄 문자를 반환하거나 사용할 수 있는 줄이 더 이상 없으면 null을 반환합니다.The next line of characters from the input stream, or null if no more lines are available.

예외

I/O 오류가 발생했습니다.An I/O error occurred.

메모리가 부족하여 반환된 문자열의 버퍼를 할당할 수 없습니다.There is insufficient memory to allocate a buffer for the returned string.

다음 줄의 문자 수가 MaxValue보다 큽니다.The number of characters in the next line of characters is greater than MaxValue.

예제

다음 예제에서는 두 명령줄 인수: 기존 텍스트 파일의 이름 및 출력을 쓸 파일의 이름입니다.The following example requires two command line arguments: the name of an existing text file, and the name of a file to write the output to. 기존 텍스트 파일을 열고 해당 파일에 표준 키보드에서 입력을 리디렉션합니다.It opens the existing text file and redirects the standard input from the keyboard to that file. 또한 출력 파일에 콘솔에서 표준 출력을으로 리디렉션합니다.It also redirects the standard output from the console to the output file. 사용 하 여는 Console.ReadLine 파일에서 각 줄을 읽을 메서드는 탭 문자를 사용 하 여 네 개의 공백의 모든 시퀀스를 대체 하며 사용은 Console.WriteLine 출력 파일에 결과 기록 하는 방법입니다.It then uses the Console.ReadLine method to read each line in the file, replaces every sequence of four spaces with a tab character, and uses the Console.WriteLine method to write the result to the output file.

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

설명

ReadLine 메서드는 표준 입력 스트림에서 한 줄을 읽습니다.The ReadLine method reads a line from the standard input stream. (줄의 정의 대 한 참조를 단락 다음 목록 뒤). 이는 다음을 의미합니다.(For the definition of a line, see the paragraph after the following list.) This means that:

  • 디바이스가 있는 경우 표준 입력 키보드를 ReadLine 사용자가 될 때까지 차단 메서드를 Enter 키입니다.If the standard input device is the keyboard, the ReadLine method blocks until the user presses the Enter key.

    가장 일반적인 이유 중 하나가 사용 하는 ReadLine 메서드는 콘솔의 선택을 취소 하 고 새 정보를 표시 하기 전에 프로그램 실행을 일시 중지 또는 애플리케이션을 종료 하기 전에 Enter 키를 눌러 사용자에 게 프롬프트.One of the most common uses of the ReadLine method is to pause program execution before clearing the console and displaying new information to it, or to prompt the user to press the Enter key before terminating the application. 다음은 이에 대한 예입니다.The following example illustrates this.

    using namespace System;
    
    void main()
    {
        Console::Clear();
    
        DateTime dat = DateTime::Now;
    
        Console::WriteLine("\nToday is {0:d} at {0:T}.", dat);
        Console::Write("\nPress any key to continue... ");
        Console::ReadLine();
    }
    // The example displays output like the following:
    //     Today is 10/26/2015 at 12:22:22 PM.
    //     
    //     Press any key to continue...
    
    
    using System;
    
    public class Example
    {
       public static void Main()
       {
          Console.Clear();
    
          DateTime dat = DateTime.Now;
    
          Console.WriteLine("\nToday is {0:d} at {0:T}.", dat);
          Console.Write("\nPress any key to continue... ");
          Console.ReadLine();
       }
    }
    // The example displays output like the following:
    //     Today is 10/26/2015 at 12:22:22 PM.
    //     
    //     Press any key to continue...
    
    
    Module Example
       Public Sub Main()
          Console.Clear()
    
          Dim dat As Date = Date.Now
    
          Console.WriteLine()
          Console.WriteLine("Today is {0:d} at {0:T}.", dat)
          Console.WriteLine()
          Console.Write("Press any key to continue... ")
          Console.ReadLine()
       End Sub
    End Module
    ' The example displays output like the following:
    '     Today is 10/26/2015 at 12:22:22 PM.
    '     
    '     Press any key to continue...
    
  • 표준 입력을 파일로 리디렉션되는 경우는 ReadLine 메서드 파일에서 텍스트 줄을 읽습니다.If standard input is redirected to a file, the ReadLine method reads a line of text from a file. 예를 들어, 다음은 ReadLine1.txt 라는 텍스트 파일입니다.For example, the following is a text file named ReadLine1.txt:

    
    This is the first line.  
    This is the second line.  
    This is the third line.  
    This is the fourth line.  
    
    

    다음 예제에서는 ReadLine 파일에서 리디렉션되는 입력을 읽는 방법.The following example uses the ReadLine method to read input that is redirected from a file. 메서드가 반환 될 때 읽기 작업 종료 null, 줄이 더 남아 읽을 수 있는지 나타냅니다.The read operation terminates when the method returns null, which indicates that no lines remain to be read.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          if (! Console.IsInputRedirected) {
             Console.WriteLine("This example requires that input be redirected from a file.");
             return; 
          }
    
          Console.WriteLine("About to call Console.ReadLine in a loop.");
          Console.WriteLine("----");
          String s;
          int ctr = 0;
          do {
             ctr++;
             s = Console.ReadLine();
             Console.WriteLine("Line {0}: {1}", ctr, s);
          } while (s != null);
          Console.WriteLine("---");
       }
    }
    // The example displays the following output:
    //       About to call Console.ReadLine in a loop.
    //       ----
    //       Line 1: This is the first line.
    //       Line 2: This is the second line.
    //       Line 3: This is the third line.
    //       Line 4: This is the fourth line.
    //       Line 5:
    //       ---
    
    Module Example
       Public Sub Main()
          If Not Console.IsInputRedirected Then
             Console.WriteLine("This example requires that input be redirected from a file.")
             Exit Sub 
          End If
    
          Console.WriteLine("About to call Console.ReadLine in a loop.")
          Console.WriteLine("----")
          Dim s As String
          Dim ctr As Integer
          Do
             ctr += 1
             s = Console.ReadLine()
             Console.WriteLine("Line {0}: {1}", ctr, s)
          Loop While s IsNot Nothing
          Console.WriteLine("---")
       End Sub
    End Module
    ' The example displays the following output:
    '       About to call Console.ReadLine in a loop.
    '       ----
    '       Line 1: This is the first line.
    '       Line 2: This is the second line.
    '       Line 3: This is the third line.
    '       Line 4: This is the fourth line.
    '       Line 5:
    '       ---
    

    이 예제를 실행 하는 명명 된 ReadLine1.exe 컴파일한 후 실행할 수 있습니다 구문 사용 하 여 명령줄에서After compiling the example to an executable named ReadLine1.exe, you can run it from the command line with the syntax

    ReadLine1 < ReadLine1.txt  
    

    파일의 내용을 읽고 콘솔에 표시 합니다.to read the contents of the file and display them to the console.

줄 문자가 뒤에 캐리지 리턴 (16 진수 0x000d), 줄 바꿈 (16 진수 0x000a) 또는 값의 시퀀스로 정의 됩니다는 Environment.NewLine 속성입니다.A line is defined as a sequence of characters followed by a carriage return (hexadecimal 0x000d), a line feed (hexadecimal 0x000a), or the value of the Environment.NewLine property. 반환된 된 문자열에는 종결 문자가 없습니다.The returned string does not contain the terminating character(s). 기본적으로 메서드를 256 자 입력된 버퍼에서 입력을 읽습니다.By default, the method reads input from a 256-character input buffer. 이 포함 되어 있으므로 Environment.NewLine 문자를 메서드 최대 254 자의 문자를 포함 하는 줄을 읽을 수 있습니다.Because this includes the Environment.NewLine character(s), the method can read lines that contain up to 254 characters. 긴 줄을 읽으려면 호출을 OpenStandardInput(Int32) 메서드.To read longer lines, call the OpenStandardInput(Int32) method.

ReadLine 메서드가 동기적으로 실행 합니다.The ReadLine method executes synchronously. 즉, 줄 읽기 또는 Ctrl + Z 키를 누를 때까지 차단 합니다.That is, it blocks until a line is read or the Ctrl+Z keyboard combination is pressed. In 속성이 반환을 TextReader 표준 입력된 스트림을 나타내는 했으며 동기를 개체 TextReader.ReadLine 메서드와 비동기 TextReader.ReadLineAsync 메서드.The In property returns a TextReader object that represents the standard input stream and that has both a synchronous TextReader.ReadLine method and an asynchronous TextReader.ReadLineAsync method. 그러나 콘솔의 표준 입력된 스트림을 사용 하는 경우는 TextReader.ReadLineAsync 비동기가 아닌 동기적으로 실행 하 고 반환을 Task<String> 읽기 작업이 완료 된 후에 합니다.However, when used as the console's standard input stream, the TextReader.ReadLineAsync executes synchronously rather than asynchronously and returns a Task<String> only after the read operation has completed.

이 메서드가 throw 하는 경우는 OutOfMemoryException 예외, 기본 판독기의 위치가 Stream 개체는 메서드를 읽지 못한 자 이지만 내부에 이미 읽은 문자 수 만큼 앞에 ReadLine 버퍼는 무시 됩니다.If this method throws an OutOfMemoryException exception, the reader's position in the underlying Stream object is advanced by the number of characters the method was able to read, but the characters already read into the internal ReadLine buffer are discarded. 이미 읽은 문자를 복구할 수 없는 및 다시 초기화에 의해서만 액세스할 수 있습니다 스트림에서 판독기의 위치를 변경할 수 없으므로는 TextReader합니다.Since the position of the reader in the stream cannot be changed, the characters already read are unrecoverable, and can be accessed only by reinitializing the TextReader. 스트림 내에서 처음 위치를 알 수 없는 경우는 스트림이 검색을 기본 지원 하지 않는 Stream 도 다시 초기화 해야 합니다.If the initial position within the stream is unknown or the stream does not support seeking, the underlying Stream also needs to be reinitialized. 이러한 상황을 피하려면 및 강력한 코드를 생성 하기 위해 사용 해야 합니다 KeyAvailable 속성 및 ReadKey 읽기 미리 할당 된 버퍼의 문자 메서드와 저장소입니다.To avoid such a situation and to produce robust code, you should use the KeyAvailable property and ReadKey method and store the read characters in a pre-allocated buffer.

메서드가 반환 하는 경우 메서드는 콘솔에서 입력을 읽기 경우 Ctrl + Z 문자를 눌렀는지를 null입니다.If the Ctrl+Z character is pressed when the method is reading input from the console, the method returns null. 이 그러면 추가 키보드를 방지 하기 위해 사용자 입력 될 때를 ReadLine 루프에서 호출 됩니다.This enables the user to prevent further keyboard input when the ReadLine method is called in a loop. 다음 예제에서는이 시나리오를 보여 줍니다.The following example illustrates this scenario.

using namespace System;

void main()
{
   String^ line;
   Console::WriteLine("Enter one or more lines of text (press CTRL+Z to exit):");
   Console::WriteLine();
   do { 
      Console::Write("   ");
      line = Console::ReadLine();
      if (line != nullptr) 
         Console::WriteLine("      " + line);
   } while (line != nullptr);   
}
// The following displays possible output from this example:
//       Enter one or more lines of text (press CTRL+Z to exit):
//       
//          This is line #1.
//             This is line #1.
//          This is line #2
//             This is line #2
//          ^Z
//       
//       >}
using System;

public class Example
{
   public static void Main()
   {
      string line;
      Console.WriteLine("Enter one or more lines of text (press CTRL+Z to exit):");
      Console.WriteLine();
      do { 
         Console.Write("   ");
         line = Console.ReadLine();
         if (line != null) 
            Console.WriteLine("      " + line);
      } while (line != null);   
   }
}
// The following displays possible output from this example:
//       Enter one or more lines of text (press CTRL+Z to exit):
//       
//          This is line #1.
//             This is line #1.
//          This is line #2
//             This is line #2
//          ^Z
//       
//       >
Module Example
   Public Sub Main()
      Dim line As String
      Console.WriteLine("Enter one or more lines of text (press CTRL+Z to exit):")
      Console.WriteLine()
      Do 
         Console.Write("   ")
         line = Console.ReadLine()
         If line IsNot Nothing Then Console.WriteLine("      " + line)
      Loop While line IsNot Nothing   
   End Sub
End Module
' The following displays possible output from this example:
'       Enter one or more lines of text (press CTRL+Z to exit):
'       
'          This is line #1.
'             This is line #1.
'          This is line #2
'             This is line #2
'          ^Z
'       
'       >

적용 대상

추가 정보