Bagikan melalui


Operasi File Jarang

Untuk menentukan apakah sistem file mendukung file jarang, panggil fungsiGetVolumeInformation 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 untuk aplikasi. Aplikasi yang mengetahui sparse-files harus menentukan apakah himpunan datanya cocok untuk disimpan dalam file jarang. Setelah penentuan tersebut 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 nonzero dalam file jarang.

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

Aplikasi sparseness-aware 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 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 nonzero yang ditulis ke bagian file yang sebelumnya nol dapat mengakibatkan alokasi ruang disk. Nol yang ditulis melalui data nonzero (hanya dengan FSCTL_SET_ZERO_DATA) dapat mengakibatkan pembatalan alokasi ruang disk.

Nota

Terserah aplikasi untuk mempertahankan 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 tingkat disk sebelum ruang yang tersedia digunakan.