FileStream.Read Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Overloads
| Name | Description |
|---|---|
| Read(Byte[], Int32, Int32) |
Leest een blok bytes uit de stream en schrijft de gegevens in een bepaalde buffer. |
| Read(Span<Byte>) |
Hiermee wordt een reeks bytes uit de huidige bestandsstroom gelezen en wordt de positie binnen de bestandsstroom verplaatst door het aantal gelezen bytes. |
Read(Byte[], Int32, Int32)
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
Leest een blok bytes uit de stream en schrijft de gegevens in een bepaalde buffer.
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
Parameters
- arraybuffer
- Byte[]
Wanneer deze methode wordt geretourneerd, bevat de opgegeven bytematrix met de waarden tussen offset en (offset + count - 1) vervangen door de bytes die zijn gelezen uit de huidige bron.
- offset
- Int32
De byte-offset array waarin de leesbytes worden geplaatst.
- count
- Int32
Het maximum aantal bytes dat moet worden gelezen.
Retouren
Het totale aantal bytes dat in de buffer is gelezen. Dit kan minder zijn dan het aantal aangevraagde bytes als dat aantal bytes momenteel niet beschikbaar is of nul als het einde van de stream is bereikt.
Uitzonderingen
array is null.
offset of count is negatief.
De stream biedt geen ondersteuning voor lezen.
Er is een I/O-fout opgetreden.
offset en count beschrijf een ongeldig bereik in array.
Methoden werden aangeroepen nadat de stream is gesloten.
Voorbeelden
In het volgende voorbeeld wordt de inhoud van een FileStream en naar een andere FileStreamgeschreven.
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
Opmerkingen
Deze methode overschrijft Read.
De offset parameter geeft de offset van de byte in array (de bufferindex) waar moet worden gelezen en de count parameter geeft het maximum aantal bytes dat uit deze stroom moet worden gelezen. De geretourneerde waarde is het werkelijke aantal bytes dat wordt gelezen of nul als het einde van de stream is bereikt. Als de leesbewerking is geslaagd, wordt de huidige positie van de stream geavanceerd met het aantal bytes gelezen. Als er een uitzondering optreedt, is de huidige positie van de stream ongewijzigd.
De Read methode retourneert alleen nul nadat het einde van de stream is bereikt. Read Anders leest u altijd ten minste één byte uit de stream voordat u terugkeert. Als er geen gegevens uit de stream beschikbaar zijn bij een aanroep naar Read, wordt de methode geblokkeerd totdat ten minste één byte aan gegevens kan worden geretourneerd. Een implementatie is gratis om minder bytes te retourneren dan aangevraagd, zelfs als het einde van de stream niet is bereikt.
Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.
Onderbreek geen thread die een leesbewerking uitvoert. Hoewel de toepassing kan worden uitgevoerd nadat de thread is gedeblokkeerd, kan de onderbreking de prestaties en betrouwbaarheid van uw toepassing verminderen.
Zie Algemene I/O-taken voor een lijst met algemene bestands- en mapbewerkingen.
Zie ook
- Bestands- en Stream-I/O
- Procedure: Tekst uit een bestand lezen
- Procedure: Tekst naar een bestand schrijven
Van toepassing op
Read(Span<Byte>)
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
- Bron:
- FileStream.cs
Hiermee wordt een reeks bytes uit de huidige bestandsstroom gelezen en wordt de positie binnen de bestandsstroom verplaatst door het aantal gelezen 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
Parameters
Een geheugengebied. Wanneer deze methode wordt geretourneerd, wordt de inhoud van deze regio vervangen door de bytes die zijn gelezen uit de huidige bestandsstroom.
Retouren
Het totale aantal bytes dat in de buffer is gelezen. Dit kan kleiner zijn dan het aantal bytes dat is toegewezen in de buffer als dat aantal bytes momenteel niet beschikbaar is, of nul (0) als het einde van de stream is bereikt.
Opmerkingen
Gebruik de CanRead eigenschap om te bepalen of het huidige exemplaar leesopties ondersteunt. Gebruik de ReadAsync methode om asynchroon te lezen vanuit de huidige stroom.
Met deze methode worden maximaal buffer.Length bytes uit de huidige bestandsstroom gelezen en opgeslagen in buffer. De huidige positie in de bestandsstroom wordt geavanceerd door het aantal gelezen bytes; Als er echter een uitzondering optreedt, blijft de huidige positie binnen de bestandsstroom ongewijzigd. De methode wordt geblokkeerd totdat ten minste één byte aan gegevens kan worden gelezen, in het geval dat er geen gegevens beschikbaar zijn.
Read retourneert alleen 0 als er geen gegevens meer in de bestandsstroom staan en niet meer wordt verwacht (zoals een gesloten socket of einde van het bestand). De methode is gratis om minder bytes te retourneren dan is aangevraagd, zelfs als het einde van de bestandsstroom niet is bereikt.
Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.