Bagikan melalui


Stream.Read Metode

Definisi

Overload

Nama Deskripsi
Read(Span<Byte>)

Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

Read(Byte[], Int32, Int32)

Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

Read(Span<Byte>)

Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs

Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

public:
 virtual int Read(Span<System::Byte> buffer);
public virtual int Read(Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer

Parameter

buffer
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 ukuran buffer jika banyak byte saat ini tidak tersedia, atau nol (0) jika panjang buffer adalah nol atau 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 terjadi pengecualian, posisi saat ini dalam aliran tetap tidak berubah. Implementasi mengembalikan jumlah byte yang dibaca. Jika lebih dari nol byte diminta, implementasi tidak akan menyelesaikan operasi sampai setidaknya satu byte data dapat dibaca (jika nol byte diminta, beberapa implementasi mungkin juga tidak selesai sampai setidaknya satu byte tersedia, tetapi tidak ada data yang akan digunakan dari aliran dalam kasus seperti itu). Read mengembalikan 0 hanya jika nol byte diminta atau 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:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs
Sumber:
Stream.cs

Ketika ditimpa dalam kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

public:
 abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read(byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Parameter

buffer
Byte[]

Array byte. Ketika metode ini kembali, buffer berisi array byte yang ditentukan dengan nilai antara offset dan (offset + count - 1) digantikan oleh byte yang dibaca dari sumber saat ini.

offset
Int32

Offset byte berbasis nol di buffer mana untuk mulai menyimpan data yang dibaca dari aliran saat ini.

count
Int32

Jumlah maksimum byte yang akan dibaca dari aliran saat ini.

Mengembalikan

Jumlah total byte yang dibaca ke dalam buffer. Ini bisa kurang dari jumlah byte yang diminta jika banyak byte yang saat ini tidak tersedia, atau nol (0) jika count adalah 0 atau akhir aliran telah tercapai.

Pengecualian

Jumlah offset dan count lebih besar dari panjang buffer.

buffer adalah null.

offset atau count negatif.

Terjadi kesalahan I/O.

Aliran tidak mendukung pembacaan.

Metode dipanggil setelah aliran ditutup.

Contoh

Contoh berikut menunjukkan cara menggunakan Read untuk membaca blok data.

using System;
using System.IO;

public class Block
{
    public static void Main()
    {
        Stream s = new MemoryStream();
        for (int i = 0; i < 122; i++)
        {
            s.WriteByte((byte)i);
        }
        s.Position = 0;

        // Now read s into a byte buffer with a little padding.
        byte[] bytes = new byte[s.Length + 10];
        int numBytesToRead = (int)s.Length;
        int numBytesRead = 0;
        do
        {
            // Read may return anything from 0 to 10.
            int n = s.Read(bytes, numBytesRead, 10);
            numBytesRead += n;
            numBytesToRead -= n;
        } while (numBytesToRead > 0);
        s.Close();

        Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
    }
}
Imports System.IO

Public Class Block
    Public Shared Sub Main()
        Dim s As Stream = New MemoryStream()
        For i As Integer = 0 To 121
            s.WriteByte(CType(i, Byte))
        Next i
        s.Position = 0

        ' Now read s into a byte buffer that is padded slightly.
        Dim bytes(s.Length + 10) As Byte
        Dim numBytesToRead As Integer = s.Length
        Dim numBytesRead As Integer = 0
        Dim n As Integer
        Do
            ' Read may return anything from 0 to 10.
            n = s.Read(bytes, numBytesRead, 10)
            ' The end of the file is reached.
            numBytesRead += n
            numBytesToRead -= n
        Loop While numBytesToRead > 0

        s.Close()
    
        Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
    End Sub
End Class

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 count byte dari aliran saat ini dan menyimpannya di buffer awal di offset. Posisi saat ini dalam aliran dimajukan dengan jumlah byte yang dibaca; namun, jika terjadi pengecualian, posisi saat ini dalam aliran tetap tidak berubah. Implementasi mengembalikan jumlah byte yang dibaca. Jika lebih dari nol byte diminta, implementasi tidak akan menyelesaikan operasi sampai setidaknya satu byte data dapat dibaca (beberapa implementasi mungkin juga tidak selesai sampai setidaknya satu byte tersedia bahkan jika nol byte diminta, tetapi tidak ada data yang akan digunakan dari aliran dalam kasus seperti itu). Read mengembalikan 0 hanya jika nol byte diminta atau 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.

Lihat juga

Berlaku untuk