Console.ReadLine Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membaca baris karakter berikutnya dari aliran input standar.
public:
static System::String ^ ReadLine();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static string? ReadLine ();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
public static string? ReadLine ();
public static string ReadLine ();
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member ReadLine : unit -> string
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("android")>]
static member ReadLine : unit -> string
static member ReadLine : unit -> string
Public Shared Function ReadLine () As String
Mengembalikan
Baris karakter berikutnya dari aliran input, atau null
jika tidak ada lagi baris yang tersedia.
- Atribut
Pengecualian
Terjadi kesalahan I/O.
Memori tidak cukup untuk mengalokasikan buffer untuk string yang dikembalikan.
Jumlah karakter di baris karakter berikutnya lebih besar dari Int32.MaxValue.
Contoh
Contoh berikut memerlukan dua argumen baris perintah: nama file teks yang ada, dan nama file untuk menulis output. Ini membuka file teks yang ada dan mengalihkan input standar dari keyboard ke file tersebut. Ini juga mengalihkan output standar dari konsol ke file output. Kemudian menggunakan Console.ReadLine metode untuk membaca setiap baris dalam file, mengganti setiap urutan empat spasi dengan karakter tab, dan menggunakan Console.WriteLine metode untuk menulis hasilnya ke file output.
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;
}
}
open System
open System.IO
let tabSize = 4
let usageText = "Usage: INSERTTABS inputfile.txt outputfile.txt"
[<EntryPoint>]
let main args =
if args.Length < 2 then
Console.WriteLine usageText
1
else
try
// Attempt to open output file.
use reader = new StreamReader(args[0])
use writer = new StreamWriter(args[1])
// 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
let mutable line = Console.ReadLine()
while line <> null do
let newLine = line.Replace(("").PadRight(tabSize, ' '), "\t")
Console.WriteLine newLine
line <- Console.ReadLine()
// Recover the standard output stream so that a
// completion message can be displayed.
let standardOutput = new StreamWriter(Console.OpenStandardOutput())
standardOutput.AutoFlush <- true
Console.SetOut standardOutput
Console.WriteLine $"INSERTTABS has completed the processing of {args[0]}."
0
with :? IOException as e ->
let errorWriter = Console.Error
errorWriter.WriteLine e.Message
errorWriter.WriteLine usageText
1
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
Keterangan
Metode ReadLine membaca baris dari aliran input standar. (Untuk definisi baris, lihat paragraf setelah daftar berikut.) Ini berarti bahwa:
Jika perangkat input standar adalah keyboard, ReadLine metode akan diblokir hingga pengguna menekan tombol Enter .
Salah satu penggunaan metode yang paling umum adalah menjeda eksekusi program sebelum menghapus konsol ReadLine dan menampilkan informasi baru padanya, atau meminta pengguna untuk menekan tombol Enter sebelum mengakhiri aplikasi. Contoh berikut mengilustrasikan langkah-langkah ini:
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...
open System Console.Clear() let dat = DateTime.Now printfn $"\nToday is {dat:d} at {dat:T}." printf "\nPress any key to continue... " Console.ReadLine() |> ignore // The example displays output like the following: // Today is 12/28/2021 at 8:23:50 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...
Jika input standar dialihkan ke file, ReadLine metode membaca baris teks dari file. Misalnya, berikut ini adalah file teks bernama ReadLine1.txt:
This is the first line. This is the second line. This is the third line. This is the fourth line.
Contoh berikut menggunakan ReadLine metode untuk membaca input yang dialihkan dari file. Operasi baca berakhir ketika metode mengembalikan
null
, yang menunjukkan bahwa tidak ada baris yang tetap dibaca.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: // ---
open System if not Console.IsInputRedirected then printfn "This example requires that input be redirected from a file." printfn "About to call Console.ReadLine in a loop." printfn "----" let mutable s = "" let mutable i = 0 while s <> null do i <- i + 1 s <- Console.ReadLine() printfn $"Line {i}: {s}" printfn "---" // 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: ' ---
Setelah mengkompilasi contoh ke executable bernama ReadLine1.exe, Anda dapat menjalankannya dari baris perintah untuk membaca konten file dan menampilkannya ke konsol. Sintaksnya adalah:
ReadLine1 < ReadLine1.txt
Garis didefinisikan sebagai urutan karakter diikuti dengan pengembalian pengangkutan (0x000d heksadesimal), umpan baris (0x000a heksadesimal), atau nilai Environment.NewLine properti. String yang dikembalikan tidak berisi karakter yang mengakhiri. Secara default, metode membaca input dari buffer input 256 karakter. Karena ini termasuk Environment.NewLine karakter, metode ini dapat membaca baris yang berisi hingga 254 karakter. Untuk membaca baris yang lebih panjang, panggil OpenStandardInput(Int32) metode .
Metode ini ReadLine dijalankan secara sinkron. Artinya, ia memblokir hingga garis dibaca atau kombinasi keyboard Ctrl+Z (diikuti oleh Enter di Windows), ditekan. Properti In mengembalikan TextReader objek yang mewakili aliran input standar dan yang memiliki metode sinkron TextReader.ReadLine dan metode asinkron TextReader.ReadLineAsync . Namun, ketika digunakan sebagai aliran input standar konsol, TextReader.ReadLineAsync konsol dijalankan secara sinkron daripada secara asinkron dan mengembalikan Task<String>
hanya setelah operasi baca selesai.
Jika metode ini melemparkan pengecualian, posisi pembaca di objek yang mendasar OutOfMemoryExceptionStream dimajukan dengan jumlah karakter yang dapat dibaca metode, tetapi karakter yang sudah dibaca ke dalam buffer internal ReadLine dibuang. Karena posisi pembaca dalam aliran tidak dapat diubah, karakter yang sudah dibaca tidak dapat dipulihkan, dan hanya dapat diakses dengan menginisialisasi ulang TextReader. Jika posisi awal dalam aliran tidak diketahui atau aliran tidak mendukung pencarian, yang mendasar Stream juga perlu diinisialisasi ulang. Untuk menghindari situasi seperti itu dan untuk menghasilkan kode yang kuat, Anda harus menggunakan KeyAvailable properti dan ReadKey metode dan menyimpan karakter baca dalam buffer yang telah dialokasikan sebelumnya.
Jika kombinasi tombol Ctrl+Z (diikuti dengan Enter di Windows) ditekan saat metode membaca input dari konsol null
, metode akan mengembalikan . Ini memungkinkan pengguna untuk mencegah input keyboard lebih lanjut ketika ReadLine metode dipanggil dalam perulangan. Contoh berikut mengilustrasikan skenario ini.
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
//
// >
open System
printfn "Enter one or more lines of text (press CTRL+Z to exit):\n"
let mutable line = ""
while line <> null do
printf " "
line <- Console.ReadLine()
if line <> null then
printfn $" {line}"
// 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
'
' >