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
| Name | Beschreibung |
|---|---|
| Read(Byte[], Int32, Int32) |
Liest einen Byteblock aus dem Datenstrom und schreibt die Daten in einen bestimmten Puffer. |
| Read(Span<Byte>) |
Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und wechselt die Position innerhalb des Dateidatenstroms um die Anzahl der gelesenen Bytes. |
Read(Byte[], Int32, Int32)
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
Liest einen Byteblock aus dem Datenstrom und schreibt die Daten in einen bestimmten 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[]
Wenn diese Methode zurückgegeben wird, enthält das angegebene Bytearray mit den Werten zwischen offset und (countoffset + - 1) ersetzt durch die Bytes, die aus der aktuellen Quelle gelesen werden).
- offset
- Int32
Der Byte-Offset, in array dem die Lesebytes platziert werden.
- count
- Int32
Die maximale Anzahl der zu lesenden Bytes.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der angeforderten Bytes sein, wenn diese Anzahl von Bytes derzeit nicht verfügbar ist, oder null, wenn das Ende des Datenstroms erreicht ist.
Ausnahmen
array ist null.
offset oder count ist negativ.
Der Datenstrom unterstützt das Lesen nicht.
Ein E/A-Fehler ist aufgetreten.
offset und count einen ungültigen Bereich in array.
Methoden wurden aufgerufen, nachdem der Datenstrom geschlossen wurde.
Beispiele
Das folgende Beispiel liest den Inhalt aus einem FileStream und schreibt ihn in eine andere FileStream.
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 (der Pufferindex) an, an dem mit dem Lesen begonnen werden soll, und der count Parameter gibt die maximale Anzahl von Bytes an, die aus diesem Datenstrom 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, ist die aktuelle Position des Datenstroms unverändert.
Die Read Methode gibt null erst nach Erreichen des Endes des Datenstroms zurück. Read Andernfalls liest vor der Rückgabe immer mindestens ein Byte aus dem Datenstrom vor. Wenn beim Aufruf Readdes Datenstroms keine Daten verfügbar sind, wird die Methode blockiert, bis mindestens ein Byte von Daten zurückgegeben werden kann. Eine Implementierung kann weniger Bytes zurückgeben als angefordert, auch wenn das Ende des Datenstroms nicht erreicht wurde.
Wird zum Lesen primitiver Datentypen verwendet BinaryReader .
Unterbrechen Sie keinen Thread, der einen Lesevorgang ausführt. Obwohl die Anwendung nach dem Entsperren des Threads möglicherweise erfolgreich ausgeführt wird, kann die Unterbrechung die Leistung und Zuverlässigkeit Ihrer Anwendung verringern.
Eine Liste allgemeiner Datei- und Verzeichnisvorgänge finden Sie unter "Allgemeine E/A-Aufgaben".
Weitere Informationen
- Datei- und Stream-E/A
- Vorgehensweise: Lesen von Text aus einer Datei
- Vorgehensweise: Schreiben von Text in eine Datei
Gilt für:
Read(Span<Byte>)
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
- Quelle:
- FileStream.cs
Liest eine Bytesequenz aus dem aktuellen Dateidatenstrom und wechselt die Position innerhalb des Dateidatenstroms um die Anzahl der gelesenen Bytes.
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 Speicherbereich. Wenn diese Methode zurückgegeben wird, werden die Inhalte dieses Bereichs durch die Bytes ersetzt, die aus dem aktuellen Dateidatenstrom gelesen werden.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der im Puffer zugewiesenen Bytes sein, wenn viele Bytes derzeit nicht verfügbar sind, oder Null (0), wenn das Ende des Datenstroms erreicht wurde.
Hinweise
Verwenden Sie die CanRead Eigenschaft, um zu ermitteln, ob die aktuelle Instanz das Lesen unterstützt. Verwenden Sie die ReadAsync Methode, um asynchron aus dem aktuellen Datenstrom 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 innerhalb des Dateidatenstroms unverändert. Die Methode wird blockiert, bis mindestens ein Byte von Daten gelesen werden kann, falls keine Daten verfügbar sind.
Read gibt 0 nur zurück, wenn im Dateidatenstrom keine weiteren Daten vorhanden sind und keine weiteren Daten erwartet werden (z. B. ein geschlossener Socket oder ein Ende der Datei). Die Methode kann weniger Bytes zurückgeben als angefordert, auch wenn das Ende des Dateidatenstroms nicht erreicht wurde.
Wird zum Lesen primitiver Datentypen verwendet BinaryReader .