FileStream.Read Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
Read(Byte[], Int32, Int32) |
Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer. |
Read(Span<Byte>) |
Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und setzt die Position in diesem Dateidatenstrom um die Anzahl der gelesenen Bytes nach vorn. |
Read(Byte[], Int32, Int32)
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
Liest einen Byteblock aus dem Stream und schreibt die Daten in einen angegebenen Puffer.
public:
override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] array, int offset, int count);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parameter
- arraybuffer
- Byte[]
Enthält nach dem Beenden dieser Methode das angegebene Bytearray mit den Werten zwischen offset
und (offset
+ count
- 1)
, die durch die aus der aktuellen Quelle gelesenen Bytes ersetzt wurden.
- offset
- Int32
Das Byteoffset in array
, an dem die gelesenen Bytes platziert werden.
- count
- Int32
Die maximale Anzahl der zu lesenden Bytes.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann weniger als die Anzahl der angeforderten Bytes sein, wenn diese Anzahl an Bytes derzeit nicht verfügbar ist, oder 0, wenn das Streamende erreicht ist.
Ausnahmen
array
ist null
.
offset
oder count
ist ein negativer Wert.
Lesevorgänge werden vom Stream nicht unterstützt.
E/A-Fehler
offset
und count
bezeichnen einen ungültigen Bereich in array
.
Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.
Beispiele
Im folgenden Beispiel wird der Inhalt aus einem gelesen und in eine FileStream andere FileStreamgeschrieben.
using System;
using System.IO;
class Test
{
public static void Main()
{
// Specify a file to read from and to create.
string pathSource = @"c:\tests\source.txt";
string pathNew = @"c:\tests\newfile.txt";
try
{
using (FileStream fsSource = new FileStream(pathSource,
FileMode.Open, FileAccess.Read))
{
// Read the source file into a byte array.
byte[] bytes = new byte[fsSource.Length];
int numBytesToRead = (int)fsSource.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
// Break when the end of the file is reached.
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
numBytesToRead = bytes.Length;
// Write the byte array to the other FileStream.
using (FileStream fsNew = new FileStream(pathNew,
FileMode.Create, FileAccess.Write))
{
fsNew.Write(bytes, 0, numBytesToRead);
}
}
}
catch (FileNotFoundException ioEx)
{
Console.WriteLine(ioEx.Message);
}
}
}
open System.IO
// Specify a file to read from and to create.
let pathSource = @"c:\tests\source.txt"
let pathNew = @"c:\tests\newfile.txt"
try
use fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read)
// Read the source file into a byte array.
let mutable numBytesToRead = int fsSource.Length
let bytes = numBytesToRead |> Array.zeroCreate
let mutable numBytesRead = 0
while numBytesToRead > 0 do
// Read may return anything from 0 to numBytesToRead.
let n = fsSource.Read(bytes, numBytesRead, numBytesToRead)
// Break when the end of the file is reached.
if n <> 0 then
numBytesRead <- numBytesRead + n
numBytesToRead <- numBytesToRead - n
let numBytesToRead = bytes.Length
// Write the byte array to the other FileStream.
use fsNew = new FileStream(pathNew, FileMode.Create, FileAccess.Write)
fsNew.Write(bytes, 0, numBytesToRead)
with :? FileNotFoundException as ioEx ->
printfn $"{ioEx.Message}"
Imports System.IO
Class Test
Public Shared Sub Main()
' Specify a file to read from and to create.
Dim pathSource As String = "c:\tests\source.txt"
Dim pathNew As String = "c:\tests\newfile.txt"
Try
Using fsSource As FileStream = New FileStream(pathSource, _
FileMode.Open, FileAccess.Read)
' Read the source file into a byte array.
Dim bytes() As Byte = New Byte((fsSource.Length) - 1) {}
Dim numBytesToRead As Integer = CType(fsSource.Length,Integer)
Dim numBytesRead As Integer = 0
While (numBytesToRead > 0)
' Read may return anything from 0 to numBytesToRead.
Dim n As Integer = fsSource.Read(bytes, numBytesRead, _
numBytesToRead)
' Break when the end of the file is reached.
If (n = 0) Then
Exit While
End If
numBytesRead = (numBytesRead + n)
numBytesToRead = (numBytesToRead - n)
End While
numBytesToRead = bytes.Length
' Write the byte array to the other FileStream.
Using fsNew As FileStream = New FileStream(pathNew, _
FileMode.Create, FileAccess.Write)
fsNew.Write(bytes, 0, numBytesToRead)
End Using
End Using
Catch ioEx As FileNotFoundException
Console.WriteLine(ioEx.Message)
End Try
End Sub
End Class
Hinweise
Diese Methode überschreibt Read.
Der offset
Parameter gibt den Offset des Byte in array
(des Pufferindexes) an, an dem mit dem Lesen begonnen werden soll, und der count
Parameter gibt die maximale Anzahl von Bytes an, die aus diesem Stream gelesen werden sollen. Der zurückgegebene Wert ist die tatsächliche Anzahl der gelesenen Bytes oder null, wenn das Ende des Datenstroms erreicht ist. Wenn der Lesevorgang erfolgreich ist, wird die aktuelle Position des Datenstroms um die Anzahl der gelesenen Bytes erweitert. Wenn eine Ausnahme auftritt, bleibt die aktuelle Position des Datenstroms unverändert.
Die Read -Methode gibt nur null zurück, nachdem das Ende des Datenstroms erreicht wurde. Read Andernfalls liest vor der Rückgabe immer mindestens ein Byte aus dem Stream. Wenn bei einem Aufruf Readvon keine Daten aus dem Stream verfügbar sind, blockiert die -Methode, bis mindestens ein Byte von Daten zurückgegeben werden kann. Eine Implementierung kann auch dann weniger Bytes als angefordert zurückgeben, wenn das Ende des Datenstroms nicht erreicht wurde.
Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.
Unterbrechen Sie keinen Thread, der einen Lesevorgang ausführt. Obwohl die Anwendung nach dem Aufheben der Blockierung des Threads erfolgreich ausgeführt werden kann, kann die Unterbrechung die Leistung und Zuverlässigkeit Ihrer Anwendung beeinträchtigen.
Eine Liste der allgemeinen Datei- und Verzeichnisvorgänge finden Sie unter Allgemeine E/A-Aufgaben.
Weitere Informationen
- Datei- und Stream-E/A
- How to: Lesen von Text aus einer Datei
- How to: Schreiben von Text in eine Datei
Gilt für:
Read(Span<Byte>)
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und setzt die Position in diesem Dateidatenstrom um die Anzahl der gelesenen Bytes nach vorn.
public:
override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer
Parameter
Ein Bereich im Arbeitsspeicher. Bei der Rückgabe dieser Methode werden die Inhalte dieses Bereichs durch die aus dem aktuellen Dateidatenstrom gelesenen Bytes ersetzt.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann weniger als die Anzahl der im Puffer zugeordneten Bytes sein, wenn diese Anzahl an Bytes derzeit nicht verfügbar ist, oder 0 (null), wenn das Ende des Streams erreicht ist.
Hinweise
Verwenden Sie die CanRead -Eigenschaft, um zu bestimmen, ob der aktuelle instance Lesevorgänge unterstützt. Verwenden Sie die ReadAsync -Methode, um asynchron aus dem aktuellen Stream zu lesen.
Diese Methode liest maximal buffer.Length
Bytes aus dem aktuellen Dateidatenstrom und speichert sie in buffer
. Die aktuelle Position innerhalb des Dateidatenstroms wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Dateidatenstrom unverändert. Die -Methode wird blockiert, bis mindestens ein Byte von Daten gelesen werden kann, falls keine Daten verfügbar sind. Read
gibt nur 0 zurück, wenn im Dateidatenstrom keine Daten mehr vorhanden sind und keine weiteren (z. B. ein geschlossener Socket oder ein Dateiende) erwartet werden. Die -Methode kann auch dann weniger Bytes zurückgeben als angefordert, wenn das Ende des Dateidatenstroms nicht erreicht wurde.
Verwenden Sie BinaryReader zum Lesen primitiver Datentypen.