
A ritka állományok csak NTFS fájlrendszer esetén használhatóak.
A ritka állományok olyan állományok, amelyek nagy mennyiségű 0 bájtokat tartalmaznak. Ezeknek az információ tartalma igen kicsi az általuk lefoglalt helyhez képest. Egy ilyen fájl lehet például egy kép, vagy egy adatbázis, amely törölt rekordokat tartalmaz.
A ritka fájlok azonosítására a FILE_ATTRIBUTE_SPARSE_FILE attribútum szolgál.
Az ilyen állományokat kezelő algoritmus az NTFS fájlrendszerrel együtt jelent meg, hogy a rendelkezésre álló helyet még takarékosabban használják fel. Amikor egy állomány a FILE_ATTRIBUTE_SPARSE_FILE attribútummal van megjelölve, akkor az operációs rendszer közvetlenül csak a nem 0 bájtokat tárolja el. A rendszer a ritka fájlok számára létrehoz egy külső listát, amelyben eltárolja a 0 bájtok helyét és számát.
Példaprogramunkban létrehozunk egy 0 bájtokat tartalmazó állományt. Az állomány létrehozásához a TFileStream osztályt használjuk. Először egy buf pointer típusú változót feltöltünk 0 értékekkel.
ZeroMemory(buf,10000000);
A buf tartalmát átmásoljuk a TFileStream-be, azaz az állományba. Ekkor létrejön a 0 bájtokat tartalmazó állományunk.
Az operációs rendszer tartalmaz egy utasítást, amellyel egy állományt megjelölhetünk a FILE_ATTRIBUTE_SPARSE_FILE attribútummal. Ez a következő:
fsutil sparse setflag Állománynév
Delphi programunkban mi is ezt a parancsot fogjuk meghívni, a ShellExecute API függvény segítségével.
ShellExecute(0,'open','fsutil',PChar('sparse setflag '+Edit1.Text),'',SW_HIDE)
A ShellExecute API függvényben külön kell megadnunk a parancsot és annak paramétereit. A függvény visszatérési értéke nagyobb, mint 32, ha lefutása sikeres volt. Ha az érték kisebb 32-nél, akkor valamilyen hiba történt a művelet végrehajtása során, ekkor a függvény visszatérési értéke a hiba kódja. A függvény használatához a uses listában fel kell sorolnunk a ShellAPI unit-ot is.