Existem duas maneiras diferentes de conseguir isso em um volume NTFS.
A SetEndOfFile
function , nos sistemas de arquivos NTFS, reserva o espaço em disco para o arquivo, mas não preenche esse espaço com nada. Pode haver uma pequena atividade de disco aqui na atualização da escrituração do NTFS. Quando um programa faz qualquer coisa para um arquivo após o último byte que tenha sido gravado anteriormente, o NTFS rabisca a execução entre o último byte gravado (último "válido") e o byte solicitado (para evitar segurança de problemas ) e atualiza o indicador de dados válido.
Depois, há arquivos esparsos . Ao contrário dos arquivos normais estendidos com SetEndOfFile
, o NTFS controla quais setores têm dados reais neles, em vez de apenas qual byte é o último com dados válidos. Longas execuções de zeros onde nada foi escrito não são armazenadas no disco físico.
Você pode verificar se um arquivo é esparso com fsutil sparse queryflag
seguido pelo caminho para o arquivo. Se não for escasso, o programa está usando a primeira abordagem.
Outras leituras: Por que minha gravação de um único byte leva uma eternidade?