Bagikan melalui


Kelas System.IO.FileStream

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

FileStream Gunakan kelas untuk membaca dari, menulis ke, membuka, dan menutup file pada sistem file, dan untuk memanipulasi handel sistem operasi terkait file lainnya, termasuk pipa, input standar, dan output standar. Anda dapat menggunakan Readmetode , Write, CopyTo, dan Flush untuk melakukan operasi sinkron, atau ReadAsyncmetode , , WriteAsyncCopyToAsync, dan FlushAsync untuk melakukan operasi asinkron. Gunakan metode asinkron untuk melakukan operasi file intensif sumber daya tanpa memblokir utas utama. Pertimbangan performa ini sangat penting dalam aplikasi Windows 8.x Store atau aplikasi desktop tempat operasi aliran yang memakan waktu dapat memblokir rangkaian UI dan membuat aplikasi tampak seolah-olah tidak berfungsi. FileStream buffer input dan output untuk performa yang lebih baik.

Penting

Jenis ini mengimplementasikan IDisposable antarmuka. Setelah selesai menggunakan jenisnya, Anda harus membuangnya baik secara langsung maupun tidak langsung. Untuk membuang jenis secara langsung, panggil metodenya Dispose dalam try/catch blok. Untuk membuangnya secara tidak langsung, gunakan konstruksi bahasa seperti using (di C#) atau Using (di Visual Basic). Untuk informasi selengkapnya, lihat bagian "Menggunakan Objek yang Menerapkan IDisposable" dalam IDisposable topik antarmuka.

Properti IsAsync mendeteksi apakah handel file dibuka secara asinkron. Anda menentukan nilai ini saat membuat instans FileStream kelas menggunakan konstruktor yang memiliki isAsyncparameter , , useAsyncatau options . Ketika properti adalah true, aliran menggunakan I/O yang tumpang tindih untuk melakukan operasi file secara asinkron. Namun, IsAsync properti tidak harus true memanggil ReadAsyncmetode , WriteAsync, atau CopyToAsync . IsAsync Ketika properti adalah false dan Anda memanggil operasi baca dan tulis asinkron, utas UI masih belum diblokir, tetapi operasi I/O aktual dilakukan secara sinkron.

Metode ini Seek mendukung akses acak ke file. Seek memungkinkan posisi baca/tulis dipindahkan ke posisi mana pun dalam file. Ini dilakukan dengan parameter titik referensi offset byte. Offset byte relatif terhadap titik referensi pencarian, yang dapat menjadi awal, posisi saat ini, atau akhir file yang mendasar, seperti yang diwakili oleh tiga anggota SeekOrigin enumerasi.

Catatan

File disk selalu mendukung akses acak. Pada saat konstruksi, CanSeek nilai properti diatur ke true atau false tergantung pada jenis file yang mendasar. Jika jenis file yang mendasar FILE_TYPE_DISK, seperti yang didefinisikan dalam winbase.h, CanSeek nilai properti adalah true. Jika tidak, CanSeek nilai properti adalah false.

Jika proses berakhir dengan bagian dari file yang dikunci atau menutup file yang memiliki kunci yang luar biasa, perilaku tersebut tidak terdefinisi.

Untuk operasi direktori dan operasi file lainnya, lihat Filekelas , , Directorydan Path . Kelas File adalah kelas utilitas yang memiliki metode statis terutama untuk pembuatan FileStream objek berdasarkan jalur file. Kelas MemoryStream membuat aliran dari array byte dan mirip FileStream dengan kelas .

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

Deteksi perubahan posisi aliran

FileStream Ketika objek tidak memiliki penangguhan eksklusif pada handelnya, utas lain dapat mengakses handel file secara bersamaan dan mengubah posisi penunjuk file sistem operasi yang terkait dengan handel file. Dalam hal ini, posisi cache di FileStream objek dan data yang di-cache di buffer dapat disusupi. Objek FileStream secara rutin melakukan pemeriksaan pada metode yang mengakses buffer yang di-cache untuk memastikan bahwa posisi handel sistem operasi sama dengan posisi cache yang digunakan oleh FileStream objek.

Jika perubahan tak terduga dalam posisi handel terdeteksi dalam panggilan ke Read metode , .NET membuang konten buffer dan membaca aliran dari file lagi. Ini dapat memengaruhi performa, tergantung pada ukuran file dan proses lain yang dapat memengaruhi posisi aliran file.

Jika perubahan tak terduga dalam posisi handel terdeteksi dalam panggilan ke Write metode , konten buffer dibuang dan IOException pengecualian dilemparkan.

Objek FileStream tidak akan memiliki penangguhan eksklusif pada handelnya ketika SafeFileHandle properti diakses untuk mengekspos handel atau FileStream objek diberikan SafeFileHandle properti dalam konstruktornya.