Sdílet prostřednictvím


FileStream.Read Metoda

Definice

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 (countoffset + - 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 arraysouboru .

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é

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

buffer
Span<Byte>

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ů.

Platí pro