Sdílet prostřednictvím


FileStream.Read Metoda

Definice

Přetížení

Name Description
Read(Byte[], Int32, Int32)

Načte blok bajtů z datového proudu a zapíše data do dané vyrovnávací paměti.

Read(Span<Byte>)

Přeč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
Zdroj:
FileStream.cs
Zdroj:
FileStream.cs

Načte blok bajtů z datového proudu 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[]

Pokud tato metoda vrátí, obsahuje zadanou bajtovou matici s hodnotami mezi offset a (countoffset + - 1) nahrazené bajty přečtenými z aktuálního zdroje.

offset
Int32

Posun bajtu, ve array kterém budou umístěny bajty pro čtení.

count
Int32

Maximální počet bajtů, které se mají přečíst.

Návraty

Celkový počet bajtů přečtených do vyrovnávací paměti. To může být menší než počet bajtů požadovaných v případě, že tento počet bajtů není aktuálně 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 popište neplatný rozsah v arraysouboru .

Metody byly volány po zavření datového proudu.

Příklady

Následující příklad přečte obsah z a FileStream zapíše ho do jiného 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

Poznámky

Tato metoda přepíše Read.

Parametr offset poskytuje posun bajtu ( 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í číst z tohoto datového proudu. 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 počtem 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. Read V opačném případě vždy čte alespoň jeden bajt z datového proudu před vrácením. Pokud nejsou v datovém proudu při volání Readk dispozici žádná data, metoda bude blokovat, dokud nebude možné vrátit alespoň jeden bajt dat. Implementace je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec 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 se aplikace po odblokování vlákna úspěšně spustí, 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
Zdroj:
FileStream.cs
Zdroj:
FileStream.cs

Přeč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. Když tato metoda vrátí, obsah této oblasti se nahradí bajty načtenými z aktuálního datového proudu souboru.

Návraty

Celkový počet bajtů přeč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 není aktuálně k dispozici mnoho bajtů, nebo nula (0), pokud bylo dosaženo konce datového proudu.

Poznámky

CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení. ReadAsync Pomocí metody můžete číst asynchronně z aktuálního datového proudu.

Tato metoda čte maximálně bajty z aktuálního datového buffer.Length proudu souboru a ukládá je do buffer. Aktuální pozice v rámci datového proudu souboru je rozšířena počtem 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 nejsou k dispozici žádná data. Read vrátí hodnotu 0 pouze v případě, že v datovém proudu souboru nejsou žádná další data a už se neočekává (například uzavřený soket nebo konec souboru). Metoda je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu souboru.

Slouží BinaryReader ke čtení primitivních datových typů.

Platí pro