Console.ReadLine-Methode
Liest die nächste Zeile von Zeichen aus dem Standardeingabestream.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function ReadLine As String
'Usage
Dim returnValue As String
returnValue = Console.ReadLine
public static string ReadLine ()
public:
static String^ ReadLine ()
public static String ReadLine ()
public static function ReadLine () : String
Rückgabewert
Die nächste Zeile von Zeichen aus dem Eingabestream oder NULL (Nothing in Visual Basic), wenn keine weiteren Zeilen verfügbar sind.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Ein E/A-Fehler ist aufgetreten. |
|
Es ist nicht genügend Speicherplatz vorhanden, um einen Puffer für die zurückgegebene Zeichenfolge zu reservieren. |
|
Die Anzahl der Zeichen in der nächsten Zeile von Zeichen ist größer als Int32.MaxValue. |
Hinweise
Eine Zeile ist definiert als Folge von Zeichen, der ein Wagenrücklauf (hexadezimal 0x000d), ein Zeilenvorschub (hexadezimal 0x000a) oder der Wert der Environment.NewLine-Eigenschaft folgt. Die zurückgegebene Zeichenfolge enthält keines der abschließenden Zeichen.
Wenn die Methode OutOfMemoryException auslöst, wird die Position des Readers im zugrunde liegenden Stream um die Anzahl von Zeichen weitergerückt, die die Methode lesen konnte, aber die bereits in den internen ReadLine-Puffer gelesenen Zeichen werden verworfen. Da die Position des Readers im Stream nicht geändert werden kann, können die bereits gelesenen Zeichen nicht wiederhergestellt werden. Auf sie kann nur nach erneuter Initialisierung des TextReader zugegriffen werden. Wenn die Ausgangsposition im Stream unbekannt ist oder der Stream keine Suche unterstützt, muss der zugrunde liegende Stream ebenfalls neu initialisiert werden.
Um diese Situation zu vermeiden, sollte robuster Code die Read-Methode verwenden und die gelesenen Zeichen in einem vorher reservierten Puffer speichern.
Beispiel
Im folgenden Codebeispiel wird die Verwendung der ReadLine-Methode veranschaulicht.
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
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;
}
}
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
{
writer = gcnew StreamWriter( args[ 2 ] );
Console::SetOut( writer );
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;
}
public class InsertTabs
{
private static int tabSize = 4;
private static String usageText = "Usage: INSERTTABS inputfile.txt"
+ " outputfile.txt";
public static void main(String[] args)
{
StreamWriter writer = null;
if (args.length < 2) {
Console.WriteLine(usageText);
return ;
}
try {
writer = new StreamWriter(args[1]);
Console.SetOut(writer);
Console.SetIn(new StreamReader(args[0]));
}
catch (IOException e) {
TextWriter errorWriter = Console.get_Error();
errorWriter.WriteLine(e.get_Message());
errorWriter.WriteLine(usageText);
return ;
}
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.set_AutoFlush(true);
Console.SetOut(standardOutput);
Console.WriteLine("INSERTTABS has completed the processing of {0}.",
args[0]);
} //main
} //InsertTabs
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]);
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
Console-Klasse
Console-Member
System-Namespace
Read
Write
WriteLine