Sdílet prostřednictvím


Řídké operace se soubory

Chcete-li zjistit, zda systém souborů podporuje řídké soubory, zavolejte funkci GetVolumeInformation a prozkoumejte příznak FILE_SUPPORTS_SPARSE_FILES bit vrácený prostřednictvím parametru lpFileSystemFlags.

Většina aplikací nezná zhuštěné soubory a nevytváří řídké soubory. Skutečnost, že aplikace čte řídký soubor, je pro aplikaci transparentní. Aplikace, která si je vědoma zhuštěných souborů by měla určit, zda je její datová sada vhodná pro uchovávání v řídkém souboru. Po určení musí aplikace explicitně deklarovat soubor jako zhuštěný pomocí FSCTL_SET_SPARSE řídicího kódu.

Jakmile aplikace nastaví řídký soubor, může aplikace použít řídicí kód FSCTL_SET_ZERO_DATA k nastavení oblasti souboru na nulu. Kromě toho může aplikace pomocí řídicího kódu FSCTL_QUERY_ALLOCATED_RANGES zrychlit vyhledávání nenulových dat v řídkém souboru.

Když provedete operaci zápisu (s jinou funkcí nebo operací než FSCTL_SET_ZERO_DATA), jejíž data se skládají z nic jiného než nuly, budou nuly zapsány na disk pro celou délku zápisu. Chcete-li nulovat rozsah souboru a zachovat řídké vlastnosti, použijte FSCTL_SET_ZERO_DATA.

Řídké aplikace může také nastavit existující soubor na řídké. Pokud aplikace nastaví existující soubor tak, aby byl řídký, měl by zkontrolovat oblasti, které obsahují nuly, a pomocí FSCTL_SET_ZERO_DATA tyto oblasti resetovat, čímž by mohlo dojít k uvolnění úložiště fyzických disků. Tento převod by měla provést aplikace upgradovaná na řídké povědomí o souborech.

Když provedete operaci čtení z části zhuštěného souboru s nulovým výstupem, operační systém nemusí číst z pevného disku. Místo toho systém rozpozná, že část souboru, která se má číst, obsahuje nuly a vrátí vyrovnávací paměť plnou nul bez skutečného čtení z disku.

Stejně jako u jakéhokoli jiného souboru může systém zapisovat data nebo číst data z libovolné pozice v řídkém souboru. Nenulová data zapsaná do dříve nulové části souboru můžou vést k přidělení místa na disku. Nuly zapsané přes nenulová data (pouze s FSCTL_SET_ZERO_DATA) můžou vést k uvolnění místa na disku.

Poznámka

Je na aplikaci udržovat řídké řídké psaním nul s FSCTL_SET_ZERO_DATA.

 

Nástroje defragmentace, které zpracovávají komprimované soubory v systémech souborů NTFS, správně zpracovávají řídké soubory na svazcích systému souborů NTFS. Velké a vysoce fragmentované řídké soubory můžou překročit omezení NTFS na diskových rozsahech před tím, než se použije dostupné místo.