FileStream.Read Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 (count
offset
+ - 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
array
adalah 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
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.