Stream.Read Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Ö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
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.