Aracılığıyla paylaş


BufferedStream.Read Yöntem

Tanım

Aşırı Yüklemeler

Name Description
Read(Span<Byte>)

Geçerli arabelleğe alınan akıştan baytları bayt aralığına kopyalar ve arabelleğe alınan akıştaki konumu okunan bayt sayısına göre ilerler.

Read(Byte[], Int32, Int32)

Geçerli arabelleğe alınan akıştan bir diziye bayt kopyalar.

Read(Span<Byte>)

Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs

Geçerli arabelleğe alınan akıştan baytları bayt aralığına kopyalar ve arabelleğe alınan akıştaki konumu okunan bayt sayısına göre ilerler.

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

Parametreler

destination
Span<Byte>

Bellek bölgesi. Bu yöntem döndürdüğünde, bu bölgenin içeriği geçerli kaynaktan okunan baytlar ile değiştirilir.

Döndürülenler

Arabelleğe okunan toplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa arabellekte ayrılan bayt sayısından az veya akışın sonuna ulaşıldıysa sıfır (0) olabilir.

Açıklamalar

CanRead Geçerli örneğin okumayı destekleyip desteklemediğini belirlemek için özelliğini kullanın. ReadAsync Geçerli akıştan zaman uyumsuz olarak okumak için yöntemini kullanın.

Bu yöntemin uygulamaları geçerli akıştan en fazla buffer.Length bayt sayısını okur ve içinde bufferdepolar. Akıştaki geçerli konum, okunan bayt sayısıyla gelişmiştir; ancak bir özel durum oluşursa akıştaki geçerli konum değişmeden kalır. Uygulamalar okunan bayt sayısını döndürür. Uygulama, kullanılabilir veri olmaması durumunda en az bir bayt veri okunana kadar engeller. Read yalnızca akışta daha fazla veri olmadığında ve daha fazla veri beklenmezse (kapalı yuva veya dosya sonu gibi) 0 döndürür. Akışın sonuna ulaşılmasa bile uygulamanın istenenden daha az bayt döndürmesi ücretsizdir.

İlkel veri türlerini okumak için kullanın BinaryReader .

Şunlara uygulanır

Read(Byte[], Int32, Int32)

Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs
Kaynak:
BufferedStream.cs

Geçerli arabelleğe alınan akıştan bir diziye bayt kopyalar.

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read(byte[] buffer, int offset, int count);
public override int Read(byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Parametreler

bufferarray
Byte[]
offset
Int32

Baytların okunmaya başlandığı arabellekteki bayt uzaklığı.

count
Int32

Okunacak bayt sayısı.

Döndürülenler

içine okunan arraytoplam bayt sayısı. Bu, şu anda kullanılabilir sayıda bayt yoksa istenen bayt sayısından az veya herhangi bir veri okunmadan önce akışın sonuna ulaşıldıysa 0 olabilir.

Özel durumlar

Eksi offset uzunluğu değerinden arraycountküçüktür.

array, null'e eşittir.

offset veya count negatiftir.

Akış açık değil veya şeklindedir null.

Akış okumayı desteklemiyor.

Akış kapatıldıktan sonra yöntemler çağrıldı.

Örnekler

Bu kod örneği, sınıfı için BufferedStream sağlanan daha büyük bir örneğin parçasıdır.

// 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"))

Açıklamalar

Read yöntemi yalnızca akışın sonuna ulaşılırsa 0 döndürür. Diğer tüm durumlarda, Read geri dönmeden önce her zaman akıştan en az bir bayt okur. Tanımı gereği, çağrısı ReadRead üzerine akıştan veri yoksa yöntemi 0 döndürür (akışın sonuna otomatik olarak ulaşılır). Akışın sonuna ulaşılmasa bile uygulamanın istenenden daha az bayt döndürmesi ücretsizdir.

İlkel veri türlerini okumak için kullanın BinaryReader .

Ayrıca bkz.

Şunlara uygulanır