Aracılığıyla paylaş


Stream.Read Yöntem

Tanım

Aşırı Yüklemeler

Name Description
Read(Span<Byte>)

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

Read(Byte[], Int32, Int32)

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

Read(Span<Byte>)

Kaynak:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

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

Parametreler

buffer
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 arabellek boyutundan küçük veya arabelleğin uzunluğu sıfır veya akışın sonuna ulaşılmışsa 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. Sıfır bayttan fazla istenirse, uygulama en az bir bayt veri okunana kadar işlemi tamamlamaz (sıfır bayt istendiyse, bazı uygulamalar en az bir bayt kullanılabilir olana kadar benzer şekilde tamamlanmayabilir, ancak böyle bir durumda akıştan veri tüketilmeyecektir). Read yalnızca sıfır bayt istendiğinde veya akışta daha fazla veri olmadığında ve artık beklenmiyorsa (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:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs
Kaynak:
Stream.cs

Türetilmiş bir sınıfta geçersiz kılındığında, geçerli akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir.

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

Parametreler

buffer
Byte[]

Bayt dizisi. Bu yöntem döndürdüğünde arabellek, ve (offset + count - 1) arasındaki offset değerlerin geçerli kaynaktan okunan baytlarla değiştirdiği belirtilen bayt dizisini içerir.

offset
Int32

Geçerli akıştan okunan verilerin depolandığı sıfır tabanlı bayt uzaklığı buffer .

count
Int32

Geçerli akıştan okunacak bayt sayısı üst sınırı.

Döndürülenler

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

Özel durumlar

ve'nin offsetcount toplamı arabellek uzunluğundan daha büyüktür.

buffer, null'e eşittir.

offset veya count negatiftir.

G/Ç hatası oluşur.

Akış okumayı desteklemiyor.

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

Örnekler

Aşağıdaki örnekte, veri bloğunu okumak için nasıl kullanılacağı Read gösterilmektedir.

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

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 count bayt sayısını okur ve başında depolar bufferoffset. 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. Sıfırdan fazla bayt istenirse, en az bir bayt veri okunana kadar uygulama işlemi tamamlamaz (sıfır bayt istense bile en az bir bayt kullanılabilir duruma gelene kadar bazı uygulamalar benzer şekilde tamamlanmayabilir, ancak böyle bir durumda akıştan veri tüketilmeyecektir). Read yalnızca sıfır bayt istendiğinde veya akışta daha fazla veri olmadığında ve artık beklenmiyorsa (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 .

Ayrıca bkz.

Şunlara uygulanır