Bagikan melalui


BufferedStream.Read Metode

Definisi

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

destination
Span<Byte>

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.

arrayadalah 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

Berlaku untuk