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