Stream.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>) |
Ketika ditimpa di 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 di 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
Ketika ditimpa di 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
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 dilanjutkan dengan jumlah byte yang dibaca; namun, jika pengecualian terjadi, 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 meskipun 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
Ketika ditimpa di 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 untuk buffer
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 namespace System;
using namespace System::IO;
public ref class Block
{
public:
static void Main()
{
Stream^ s = gcnew MemoryStream();
for (int i = 0; i < 100; i++)
{
s->WriteByte((Byte)i);
}
s->Position = 0;
// Now read s into a byte buffer.
array<Byte>^ bytes = gcnew array<Byte>(s->Length);
int numBytesToRead = (int) s->Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s->Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
s->Close();
// numBytesToRead should be 0 now, and numBytesRead should
// equal 100.
Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
}
};
int main()
{
Block::Main();
}
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 dilanjutkan dengan jumlah byte yang dibaca; namun, jika pengecualian terjadi, 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 meskipun akhir aliran belum tercapai.
Gunakan BinaryReader untuk membaca jenis data primitif.