Sdílet prostřednictvím


Stream.Read Metoda

Definice

Přetížení

Name Description
Read(Span<Byte>)

Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.

Read(Byte[], Int32, Int32)

Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.

Read(Span<Byte>)

Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs

Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.

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

Parametry

buffer
Span<Byte>

Oblast paměti. Když tato metoda vrátí, obsah této oblasti se nahradí bajty načtenými z aktuálního zdroje.

Návraty

Celkový počet bajtů přečtených do vyrovnávací paměti. To může být menší než velikost vyrovnávací paměti, pokud není aktuálně k dispozici mnoho bajtů, nebo nula (0), pokud je délka vyrovnávací paměti nula nebo byl dosažen konec datového proudu.

Poznámky

CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení. ReadAsync Pomocí metody můžete číst asynchronně z aktuálního datového proudu.

Implementace této metody čtou maximum buffer.Length bajtů z aktuálního datového proudu a ukládají je do buffer. Aktuální pozice v rámci datového proudu je rozšířena počtem přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v rámci datového proudu nezměněna. Implementace vrátí počet přečtených bajtů. Pokud je požadováno více než nula bajtů, implementace operaci nedokončí, dokud nebude možné číst alespoň jeden bajt dat (pokud byly požadovány nulové bajty, některé implementace se můžou podobně nedokončit, dokud nebude k dispozici alespoň jeden bajt, ale v takovém případě nebudou z datového proudu spotřebována žádná data). Read vrátí hodnotu 0 pouze v případě, že byly požadovány nulové bajty nebo pokud v datovém proudu nejsou žádná další data a očekává se žádné další (například uzavřený soket nebo konec souboru). Implementace je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu.

Slouží BinaryReader ke čtení primitivních datových typů.

Platí pro

Read(Byte[], Int32, Int32)

Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs
Zdroj:
Stream.cs

Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.

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

Parametry

buffer
Byte[]

Pole bajtů. Pokud tato metoda vrátí, vyrovnávací paměť obsahuje určenou bajtovou matici s hodnotami mezi offset a (offset + count - 1) nahrazené bajty přečtenými z aktuálního zdroje.

offset
Int32

Posun bajtů založený na nule, ve buffer kterém se mají začít ukládat data načtená z aktuálního datového proudu.

count
Int32

Maximální počet bajtů, které se mají číst z aktuálního datového proudu.

Návraty

Celkový počet bajtů přečtených do vyrovnávací paměti. Může to být menší než počet bajtů požadovaných v případě, že počet bajtů není aktuálně k dispozici, nebo nula (0), pokud count je 0 nebo byl dosažen konec datového proudu.

Výjimky

Součet offset a count je větší než délka vyrovnávací paměti.

buffer je null.

offset nebo count je negativní.

Dojde k vstupně-výstupní chybě.

Stream nepodporuje čtení.

Metody byly volány po zavření datového proudu.

Příklady

Následující příklad ukazuje, jak použít Read ke čtení bloku dat.

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

Poznámky

CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení. ReadAsync Pomocí metody můžete číst asynchronně z aktuálního datového proudu.

Implementace této metody čtou maximum count bajtů z aktuálního datového proudu a ukládají je buffer na začátku .offset Aktuální pozice v rámci datového proudu je rozšířena počtem přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v rámci datového proudu nezměněna. Implementace vrátí počet přečtených bajtů. Pokud je požadováno více než nula bajtů, implementace operaci nedokončí, dokud nebude možné číst alespoň jeden bajt dat (některé implementace se mohou podobně nedokončit, dokud nebude k dispozici alespoň jeden bajt, i když byly požadovány nulové bajty, ale v takovém případě nebudou spotřebována žádná data z datového proudu). Read vrátí hodnotu 0 pouze v případě, že byly požadovány nulové bajty nebo pokud v datovém proudu nejsou žádná další data a očekává se žádné další (například uzavřený soket nebo konec souboru). Implementace je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu.

Slouží BinaryReader ke čtení primitivních datových typů.

Viz také

Platí pro