Stream.Read Metod

Definition

Överlagringar

Name Description
Read(Span<Byte>)

När den åsidosätts i en härledd klass läser du en sekvens med byte från den aktuella strömmen och flyttar fram positionen i dataströmmen med antalet lästa byte.

Read(Byte[], Int32, Int32)

När den åsidosätts i en härledd klass läser du en sekvens med byte från den aktuella strömmen och flyttar fram positionen i dataströmmen med antalet lästa byte.

Read(Span<Byte>)

När den åsidosätts i en härledd klass läser du en sekvens med byte från den aktuella strömmen och flyttar fram positionen i dataströmmen med antalet lästa byte.

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

Parametrar

buffer
Span<Byte>

En region med minne. När den här metoden returnerar ersätts innehållet i den här regionen med byteen som lästs från den aktuella källan.

Returer

Det totala antalet byte som lästs in i bufferten. Detta kan vara mindre än buffertens storlek om så många byte för närvarande inte är tillgängliga eller noll (0) om buffertens längd är noll eller om strömmens slut har nåtts.

Kommentarer

Använd egenskapen CanRead för att avgöra om den aktuella instansen stöder läsning. ReadAsync Använd metoden för att läsa asynkront från den aktuella strömmen.

Implementeringar av den här metoden läser upp maximalt buffer.Length antal byte från den aktuella strömmen och lagrar dem i buffer. Den aktuella positionen i dataströmmen avanceras av antalet lästa byte. Men om ett undantag inträffar förblir den aktuella positionen i dataströmmen oförändrad. Implementeringar returnerar antalet lästa byte. Om fler än noll byte begärs slutför implementeringen inte åtgärden förrän minst en byte data kan läsas (om noll byte begärdes kanske vissa implementeringar inte slutförs förrän minst en byte är tillgänglig, men inga data förbrukas från strömmen i sådana fall). Read returnerar endast 0 om noll byte begärdes eller när det inte finns fler data i dataströmmen och inget mer förväntas (till exempel en sluten socket eller filslut). En implementering kan returnera färre byte än vad som begärts även om dataströmmens slut inte har nåtts.

Används BinaryReader för att läsa primitiva datatyper.

Gäller för

Read(Byte[], Int32, Int32)

När den åsidosätts i en härledd klass läser du en sekvens med byte från den aktuella strömmen och flyttar fram positionen i dataströmmen med antalet lästa byte.

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

Parametrar

buffer
Byte[]

En matris med byte. När den här metoden returnerar innehåller bufferten den angivna bytematrisen med värdena mellan offset och (offset + count - 1) ersatta av byteen som lästs från den aktuella källan.

offset
Int32

Den nollbaserade byteförskjutningen buffer där du kan börja lagra data som lästs från den aktuella strömmen.

count
Int32

Det maximala antalet byte som ska läsas från den aktuella strömmen.

Returer

Det totala antalet byte som lästs in i bufferten. Detta kan vara mindre än antalet byte som begärs om så många byte inte är tillgängliga för närvarande, eller noll (0) om count är 0 eller om strömmens slut har nåtts.

Undantag

Summan av offset och count är större än buffertlängden.

buffer är null.

offset eller count är negativ.

Ett I/O-fel inträffar.

Strömmen stöder inte läsning.

Metoder anropades efter att strömmen stängdes.

Exempel

I följande exempel visas hur du använder Read för att läsa ett datablock.

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

Kommentarer

Använd egenskapen CanRead för att avgöra om den aktuella instansen stöder läsning. ReadAsync Använd metoden för att läsa asynkront från den aktuella strömmen.

Implementeringar av den här metoden läser maximalt antal count byte från den aktuella strömmen och lagrar dem i buffer början av offset. Den aktuella positionen i dataströmmen avanceras av antalet lästa byte. Men om ett undantag inträffar förblir den aktuella positionen i dataströmmen oförändrad. Implementeringar returnerar antalet lästa byte. Om fler än noll byte begärs slutför implementeringen inte åtgärden förrän minst en byte data kan läsas (vissa implementeringar kanske inte slutförs förrän minst en byte är tillgänglig även om noll byte begärdes, men inga data förbrukas från strömmen i sådana fall). Read returnerar endast 0 om noll byte begärdes eller när det inte finns fler data i dataströmmen och inget mer förväntas (till exempel en sluten socket eller filslut). En implementering kan returnera färre byte än vad som begärts även om dataströmmens slut inte har nåtts.

Används BinaryReader för att läsa primitiva datatyper.

Se även

Gäller för