BufferedStream.Read 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.
Overload
Read(Span<Byte>) |
Menyalin byte dari aliran buffer saat ini ke rentang byte dan memajukan posisi dalam aliran buffer dengan jumlah byte yang dibaca. |
Read(Byte[], Int32, Int32) |
Menyalin byte dari aliran buffer saat ini ke array. |
Read(Span<Byte>)
- Sumber:
- BufferedStream.cs
- Sumber:
- BufferedStream.cs
- Sumber:
- BufferedStream.cs
Menyalin byte dari aliran buffer saat ini ke rentang byte dan memajukan posisi dalam aliran buffer dengan jumlah byte yang dibaca.
public:
override int Read(Span<System::Byte> destination);
public override int Read (Span<byte> destination);
override this.Read : Span<byte> -> int
Public Overrides Function Read (destination As Span(Of Byte)) As Integer
Parameter
Wilayah memori. Ketika metode ini kembali, konten wilayah ini digantikan oleh byte yang dibaca dari sumber saat ini.
Mengembalikan
Jumlah total byte yang dibaca ke dalam buffer. Ini bisa kurang dari jumlah byte yang dialokasikan dalam buffer jika banyak byte saat ini tidak tersedia, atau nol (0) jika akhir aliran telah tercapai.
Keterangan
CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan. ReadAsync Gunakan metode untuk membaca secara asinkron dari aliran saat ini.
Implementasi metode ini membaca maksimum buffer.Length
byte dari aliran saat ini dan menyimpannya di buffer
. Posisi saat ini dalam aliran dimajukan dengan jumlah byte yang dibaca; namun, jika pengecualian terjadi, posisi saat ini dalam aliran tetap tidak berubah. Implementasi mengembalikan jumlah byte yang dibaca. Implementasi akan memblokir hingga setidaknya satu byte data dapat dibaca, jika tidak ada data yang tersedia. Read
mengembalikan 0 hanya ketika tidak ada lagi data dalam aliran dan tidak ada lagi yang diharapkan (seperti soket tertutup atau akhir file). Implementasi gratis untuk mengembalikan lebih sedikit byte daripada yang diminta bahkan jika akhir aliran belum tercapai.
Gunakan BinaryReader untuk membaca jenis data primitif.
Berlaku untuk
Read(Byte[], Int32, Int32)
- Sumber:
- BufferedStream.cs
- Sumber:
- BufferedStream.cs
- Sumber:
- BufferedStream.cs
Menyalin byte dari aliran buffer saat ini ke array.
public:
override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] array, int offset, int count);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parameter
- arraybuffer
- Byte[]
Buffer tempat byte akan disalin.
- offset
- Int32
Offset byte dalam buffer untuk mulai membaca byte.
- count
- Int32
Jumlah byte yang akan dibaca.
Mengembalikan
Jumlah total byte yang dibaca ke dalam array
. Ini bisa kurang dari jumlah byte yang diminta jika banyak byte saat ini tidak tersedia, atau 0 jika akhir aliran telah tercapai sebelum data apa pun dapat dibaca.
Pengecualian
array
Panjang minus offset
kurang dari count
.
array
adalah null
.
offset
atau count
negatif.
Aliran tidak terbuka atau .null
Aliran tidak mendukung pembacaan.
Metode dipanggil setelah aliran ditutup.
Contoh
Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk BufferedStream kelas .
// Receive data using the BufferedStream.
Console::WriteLine( "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString( "F1" ) );
// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;
int numBytesToRead = receivedData.Length;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = bufStream.Read(receivedData,0, receivedData.Length);
// The end of the file is reached.
if (n == 0)
break;
bytesReceived += n;
numBytesToRead -= n;
}
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
bytesReceived.ToString(),
bufferedTime.ToString("F1"));
// Receive data using the BufferedStream.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now
let mutable numBytesToRead = receivedData.Length
let mutable broken = false
while not broken && numBytesToRead > 0 do
// Read may return anything from 0 to numBytesToRead.
let n = bufStream.Read(receivedData,0, receivedData.Length)
// The end of the file is reached.
if n = 0 then
broken <- true
else
bytesReceived <- bytesReceived + n
numBytesToRead <- numBytesToRead - n
let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now
Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0
'Read my return anything from 0 to numBytesToRead
n = bufStream.Read(receivedData, 0, receivedData.Length)
'The end of the file is reached.
If n = 0 Then
Exit Do
End If
bytesReceived += n
numBytesToRead -= n
Loop
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
"seconds." & vbCrLf, _
bytesReceived.ToString(), _
bufferedTime.ToString("F1"))
Keterangan
Metode Read
akan mengembalikan 0 hanya jika akhir aliran tercapai. Dalam semua kasus lain, Read
selalu membaca setidaknya satu byte dari aliran sebelum kembali. Menurut definisi, jika tidak ada data yang tersedia dari aliran setelah panggilan ke Read
, Read
metode mengembalikan 0 (akhir aliran tercapai secara otomatis). Implementasi gratis untuk mengembalikan lebih sedikit byte daripada yang diminta bahkan jika akhir aliran belum tercapai.
Gunakan BinaryReader untuk membaca jenis data primitif.
Lihat juga
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- I/O File dan Aliran
- Cara: Membaca Teks dari File
- Cara: Menulis Teks ke File