FileStream.Read Metode

Definisi

Overload

Read(Byte[], Int32, Int32)

Membaca blok byte dari aliran dan menulis data dalam buffer tertentu.

Read(Span<Byte>)

Membaca urutan byte dari aliran file saat ini dan memajukan posisi dalam aliran file dengan jumlah byte yang dibaca.

Read(Byte[], Int32, Int32)

Sumber:
FileStream.cs
Sumber:
FileStream.cs
Sumber:
FileStream.cs

Membaca blok byte dari aliran dan menulis data dalam buffer tertentu.

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[]

Ketika metode ini kembali, berisi array byte yang ditentukan dengan nilai antara offset dan (countoffset + - 1) digantikan oleh byte yang dibaca dari sumber saat ini.

offset
Int32

Offset byte tempat array byte baca akan ditempatkan.

count
Int32

Jumlah maksimum byte yang akan dibaca.

Mengembalikan

Jumlah total byte yang dibaca ke dalam buffer. Ini mungkin kurang dari jumlah byte yang diminta jika jumlah byte tersebut saat ini tidak tersedia, atau nol jika akhir aliran tercapai.

Pengecualian

arrayadalah null.

offset atau count negatif.

Aliran tidak mendukung pembacaan.

Terjadi kesalahan I/O.

offset dan count jelaskan rentang yang tidak valid di array.

Metode dipanggil setelah aliran ditutup.

Contoh

Contoh berikut membaca konten dari FileStream dan menulisnya ke dalam yang lain 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

Keterangan

Metode ini mengambil alih Read.

Parameter offset memberikan offset byte di array (indeks buffer) di mana untuk mulai membaca, dan count parameter memberikan jumlah maksimum byte yang akan dibaca dari aliran ini. Nilai yang dikembalikan adalah jumlah aktual byte yang dibaca, atau nol jika akhir aliran tercapai. Jika operasi baca berhasil, posisi aliran saat ini dimajukan dengan jumlah byte yang dibaca. Jika terjadi pengecualian, posisi aliran saat ini tidak berubah.

Metode mengembalikan Read nol hanya setelah mencapai akhir aliran. Jika tidak, Read selalu baca setidaknya satu byte dari aliran sebelum kembali. Jika tidak ada data yang tersedia dari aliran setelah panggilan ke Read, metode akan memblokir hingga setidaknya satu byte data dapat dikembalikan. Implementasi gratis untuk mengembalikan lebih sedikit byte daripada yang diminta bahkan jika akhir aliran belum tercapai.

Gunakan BinaryReader untuk membaca jenis data primitif.

Jangan mengganggu utas yang melakukan operasi baca. Meskipun aplikasi mungkin tampak berhasil berjalan setelah utas tidak diblokir, gangguan dapat mengurangi performa dan keandalan aplikasi Anda.

Untuk daftar operasi file dan direktori umum, lihat Tugas I/O Umum.

Lihat juga

Berlaku untuk

Read(Span<Byte>)

Sumber:
FileStream.cs
Sumber:
FileStream.cs
Sumber:
FileStream.cs

Membaca urutan byte dari aliran file saat ini dan memajukan posisi dalam aliran file dengan jumlah byte yang dibaca.

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

buffer
Span<Byte>

Wilayah memori. Ketika metode ini kembali, konten wilayah ini digantikan oleh byte yang dibaca dari aliran file saat ini.

Mengembalikan

Jumlah total byte yang dibaca ke dalam buffer. Ini bisa kurang dari jumlah byte yang dialokasikan dalam buffer jika banyak byte saat ini tidak tersedia, atau nol (0) jika akhir aliran telah tercapai.

Keterangan

CanRead Gunakan properti untuk menentukan apakah instans saat ini mendukung pembacaan. ReadAsync Gunakan metode untuk membaca secara asinkron dari aliran saat ini.

Metode ini membaca maksimum buffer.Length byte dari aliran file saat ini dan menyimpannya di buffer. Posisi saat ini dalam aliran file dimajukan dengan jumlah byte yang dibaca; namun, jika pengecualian terjadi, posisi saat ini dalam aliran file tetap tidak berubah. Metode ini akan memblokir hingga setidaknya satu byte data dapat dibaca, jika tidak ada data yang tersedia. Read mengembalikan 0 hanya ketika tidak ada lagi data dalam aliran file dan tidak ada lagi yang diharapkan (seperti soket tertutup atau akhir file). Metode ini gratis untuk mengembalikan lebih sedikit byte daripada yang diminta bahkan jika akhir aliran file belum tercapai.

Gunakan BinaryReader untuk membaca jenis data primitif.

Berlaku untuk