FileStream.Read Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
Read(Byte[], Int32, Int32) |
Načte blok bajtů ze streamu a zapíše data do dané vyrovnávací paměti. |
Read(Span<Byte>) |
Načte posloupnost bajtů z aktuálního datového proudu souboru a posune pozici v datovém proudu souboru o počet přečtených bajtů. |
Read(Byte[], Int32, Int32)
- Zdroj:
- FileStream.cs
- Zdroj:
- FileStream.cs
- Zdroj:
- FileStream.cs
Načte blok bajtů ze streamu a zapíše data do dané vyrovnávací paměti.
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
Parametry
- arraybuffer
- Byte[]
Když tato metoda vrátí, obsahuje zadané pole bajtů s hodnotami mezi offset
a (count
offset
+ - 1)
nahrazeno bajty načtenými z aktuálního zdroje.
- offset
- Int32
Odsazení bajtů, ve array
kterém budou umístěny přečtené bajty.
- count
- Int32
Maximální počet bajtů ke čtení.
Návraty
Celkový počet bajtů načtených do vyrovnávací paměti. To může být menší než počet požadovaných bajtů, pokud tento počet bajtů aktuálně není k dispozici, nebo nula, pokud je dosaženo konce datového proudu.
Výjimky
array
je null
.
offset
nebo count
je negativní.
Stream nepodporuje čtení.
Došlo k vstupně-výstupní chybě.
offset
a count
popisují neplatnou oblast v array
souboru .
Metody byly volány po zavření datového proudu.
Příklady
Následující příklad přečte obsah z objektu a zapíše ho do jiného objektu FileStreamFileStream.
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
Poznámky
Tato metoda přepíše Read.
Parametr offset
poskytuje posun bajtu v array
(index vyrovnávací paměti), při kterém se má začít číst, a count
parametr poskytuje maximální počet bajtů, které se mají z tohoto datového proudu číst. Vrácená hodnota je skutečný počet přečtených bajtů, nebo nula, pokud je dosaženo konce datového proudu. Pokud je operace čtení úspěšná, aktuální pozice datového proudu je rozšířena o počet přečtených bajtů. Pokud dojde k výjimce, aktuální pozice datového proudu se nezmění.
Metoda Read vrátí nulu až po dosažení konce datového proudu. V opačném Read případě vždy před vrácením přečte alespoň jeden bajt z datového proudu. Pokud nejsou z datového proudu při volání Readk dispozici žádná data , metoda se zablokuje, dokud nebude možné vrátit alespoň jeden bajt dat. Implementace může bezplatně vracet méně bajtů, než je požadováno, i když nebylo dosaženo konce datového proudu.
Slouží BinaryReader ke čtení primitivních datových typů.
Nepřerušujte vlákno, které provádí operaci čtení. I když se může zdát, že aplikace po odblokování vlákna úspěšně běží, přerušení může snížit výkon a spolehlivost aplikace.
Seznam běžných operací se soubory a adresáři najdete v tématu Běžné vstupně-výstupní úlohy.
Viz také
- Vstupně-výstupní operace souborů a Stream
- Postupy: Čtení textu ze souboru
- Postupy: Zápis textu do souboru
Platí pro
Read(Span<Byte>)
- Zdroj:
- FileStream.cs
- Zdroj:
- FileStream.cs
- Zdroj:
- FileStream.cs
Načte posloupnost bajtů z aktuálního datového proudu souboru a posune pozici v datovém proudu souboru o počet přečtených bajtů.
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
Parametry
Oblast paměti. Při vrácení této metody se obsah této oblasti nahradí bajty načtenými z aktuálního datového proudu souboru.
Návraty
Celkový počet bajtů načtených do vyrovnávací paměti. To může být menší než počet bajtů přidělených ve vyrovnávací paměti, pokud tento počet bajtů není aktuálně k dispozici, nebo nula (0), pokud bylo dosaženo konce datového proudu.
Poznámky
CanRead Pomocí vlastnosti určete, jestli aktuální instance podporuje čtení. K asynchronnímu čtení z aktuálního datového ReadAsync proudu použijte metodu .
Tato metoda načte maximum bajtů z aktuálního datového buffer.Length
proudu souboru a uloží je do buffer
. Aktuální pozice v rámci datového proudu souboru je rozšířena o počet přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v datovém proudu souboru beze změny. Metoda bude blokovat, dokud nebude možné číst alespoň jeden bajt dat v případě, že nebudou k dispozici žádná data. Read
vrátí hodnotu 0 pouze v případě, že v datovém proudu souboru nejsou žádná další data a neočekává se žádná další data (například uzavřený soket nebo konec souboru). Metoda může vrátit méně bajtů, než je požadováno, i když nebylo dosaženo konce datového proudu souboru.
Slouží BinaryReader ke čtení primitivních datových typů.