Seyrek Dosya İşlemleri

Dosya sisteminin seyrek dosyaları destekleyip desteklemediğini belirlemek için GetVolumeInformation işlevini çağırın ve lpFileSystemFlags parametresi aracılığıyla döndürülen FILE_SUPPORTS_SPARSE_FILES bit bayrağını inceleyin.

Çoğu uygulama seyrek dosyaların farkında değildir ve seyrek dosyalar oluşturmaz. Bir uygulamanın seyrek dosya okuması, uygulama için saydamdır. Seyrek dosyaların farkında olan bir uygulama, veri kümesinin seyrek bir dosyada saklanmaya uygun olup olmadığını belirlemelidir. Bu belirleme yapıldıktan sonra, uygulamanın FSCTL_SET_SPARSE denetim kodunu kullanarak bir dosyayı açıkça seyrek olarak bildirmesi gerekir.

Bir uygulama dosyayı seyrek olarak ayarladıktan sonra, uygulama dosyanın bölgesini sıfır olarak ayarlamak için FSCTL_SET_ZERO_DATA denetim kodunu kullanabilir. Buna ek olarak, uygulama seyrek dosyada sıfır olmayan veri aramalarını hızlandırmak için FSCTL_QUERY_ALLOCATED_RANGES denetim kodunu kullanabilir.

Verileri sıfırdan başka hiçbir şeyden oluşan bir yazma işlemi (FSCTL_SET_ZERO_DATAdışında bir işlev veya işlemle) gerçekleştirdiğinizde, yazma işleminin tamamı boyunca diske sıfırlar yazılır. Dosya aralığını sıfırlayıp seyrekliği korumak için FSCTL_SET_ZERO_DATAkullanın.

Seyreklik algılayan bir uygulama da var olan bir dosyayı seyrek olacak şekilde ayarlayabilir. Bir uygulama var olan bir dosyayı seyrek olarak ayarlarsa, sıfır içeren bölgeler için dosyayı taramalı ve bu bölgeleri sıfırlamak için FSCTL_SET_ZERO_DATA kullanmalı ve böylece bazı fiziksel disk depolama alanı serbest bırakılmalıdır. Seyrek dosya tanımaya yükseltilen bir uygulama bu dönüştürmeyi gerçekleştirmelidir.

Seyrek dosyanın sıfırlanmış bir bölümünden okuma işlemi gerçekleştirdiğinizde, işletim sistemi sabit disk sürücüsünden okumayabilir. Bunun yerine, sistem okunacak dosyanın bölümünün sıfırlar içerdiğini algılar ve diskten gerçekten okumadan sıfırlarla dolu bir arabellek döndürür.

Sistem, diğer tüm dosyalarda olduğu gibi seyrek bir dosyadaki herhangi bir konumdan veri yazabilir veya okuyabilir. Sıfırlanmamış verilerin dosyanın önceden sıfırlanmış bir bölümüne yazılması disk alanının ayrılmasına neden olabilir. Sıfır olmayan veriler (yalnızca FSCTL_SET_ZERO_DATAile) üzerine yazılan sıfırlar disk alanının serbest bırakılmasına neden olabilir.

Not

FSCTL_SET_ZERO_DATAile sıfırlar yazarak seyrekliği korumak uygulamaya bağlı.

 

NTFS dosya sistemlerindeki sıkıştırılmış dosyaları işleyen birleştirme araçları, NTFS dosya sistemi birimlerindeki seyrek dosyaları doğru şekilde işler. Büyük ve yüksek oranda parçalanmış seyrek dosyalar, kullanılabilir alan kullanılmadan önce disk kapsamlarında NTFS sınırlamasını aşabilir.