Bagikan melalui


Operasi File Jarang

Untuk menentukan apakah sistem file mendukung file jarang, panggil fungsi GetVolumeInformation dan periksa bendera bit FILE_SUPPORTS_SPARSE_FILES yang dikembalikan melalui parameter lpFileSystemFlags .

Sebagian besar aplikasi tidak menyadari file jarang dan tidak akan membuat file jarang. Fakta bahwa aplikasi membaca file jarang transparan terhadap aplikasi. Aplikasi yang mengetahui sparse-files harus menentukan apakah himpunan datanya cocok untuk disimpan dalam file jarang. Setelah penentuan dibuat, aplikasi harus secara eksplisit menyatakan file sebagai jarang, menggunakan kode kontrol FSCTL_SET_SPARSE .

Setelah aplikasi mengatur file menjadi jarang, aplikasi dapat menggunakan kode kontrol FSCTL_SET_ZERO_DATA untuk mengatur wilayah file ke nol. Selain itu, aplikasi dapat menggunakan kode kontrol FSCTL_QUERY_ALLOCATED_RANGES untuk mempercepat pencarian data bukan nol dalam file jarang.

Ketika Anda melakukan operasi tulis (dengan fungsi atau operasi selain FSCTL_SET_ZERO_DATA) yang datanya tidak terdiri dari nol, nol akan ditulis ke disk untuk seluruh panjang penulisan. Untuk nol rentang file dan mempertahankan jarang, gunakan FSCTL_SET_ZERO_DATA.

Aplikasi yang sadar jarang juga dapat mengatur file yang ada menjadi jarang. Jika aplikasi menetapkan file yang ada menjadi jarang, aplikasi kemudian harus memindai file untuk wilayah yang berisi nol, dan menggunakan FSCTL_SET_ZERO_DATA untuk mengatur ulang wilayah tersebut, sehingga mungkin membatalkan alokasi beberapa penyimpanan disk fisik. Aplikasi yang ditingkatkan ke kesadaran file jarang harus melakukan konversi ini.

Ketika Anda melakukan operasi baca dari bagian nol keluar dari file jarang, sistem operasi mungkin tidak membaca dari hard disk drive. Sebaliknya, sistem mengenali bahwa bagian file yang akan dibaca berisi nol, dan mengembalikan buffer penuh nol tanpa benar-benar membaca dari disk.

Seperti halnya file lain, sistem dapat menulis data ke atau membaca data dari posisi apa pun dalam file jarang. Data bukan nol yang ditulis ke bagian file yang sebelumnya nol dapat mengakibatkan alokasi ruang disk. Nol yang ditulis melalui data bukan nol (hanya dengan FSCTL_SET_ZERO_DATA) dapat mengakibatkan pembatalan alokasi ruang disk.

Catatan

Terserah aplikasi untuk menjaga jarang dengan menulis nol dengan FSCTL_SET_ZERO_DATA.

 

Alat defragmentasi yang menangani file terkompresi pada sistem file NTFS akan menangani file jarang dengan benar pada volume sistem file NTFS. File sparse besar dan sangat terfragmentasi dapat melebihi batasan NTFS pada jangkauan disk sebelum ruang yang tersedia digunakan.