Console.ReadLine メソッド

標準入力ストリームから次の 1 行分の文字を読み取ります。

Public Shared Function ReadLine() As String
[C#]
public static string ReadLine();
[C++]
public: static String* ReadLine();
[JScript]
public static function ReadLine() : String;

戻り値

入力ストリームの次の行。または次の行がない場合は null 参照 (Visual Basic では Nothing) 。

例外

例外の種類 条件
IOException I/O エラーが発生しました。
OutOfMemoryException 返される文字列用のバッファを割り当てるためにはメモリが不足しています。

解説

1 行は、末尾にキャリッジ リターン (16 進数 0x000d)、ライン フィード (16 進数 0x000a)、または Environment.NewLine が付いた一連の文字として定義されています。返される文字列には終端文字が含まれません。

このメソッドが OutOfMemoryException をスローした場合、基になる Stream 内のリーダーの位置は、メソッドが読み込むことができた文字数だけ進みますが、内部 ReadLine バッファに読み込まれた文字は破棄されます。ストリーム内のリーダーの位置は変更できないため、読み込み済みの文字は回復不能です。このため、読み込み済みの文字にアクセスするには、 TextReader を再初期化する必要があります。ストリーム内の初期位置が不明であるか、ストリームがシークをサポートしない場合は、基になる Stream も再初期化する必要があります。

このような状況を回避し、信頼性の高いコードを生成するには、 Read メソッドを使用し、読み込み済みの文字を割り当て済みのバッファに格納する必要があります。

使用例

ReadLine の使用方法については、次のコード例を参照してください。

 
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]);

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Console クラス | Console メンバ | System 名前空間 | Read | Write | WriteLine