Quando você salva um arquivo de texto, altera o conteúdo, salva novamente e pressiona o botão de reinicialização do hardware, o arquivo tem uma grande chance de se corromper (!) (todo o conteúdo é convertido para \ 0 caracteres). Eu posso reproduzir isso em máquinas diferentes usando o Windows 7, 8.1 e 10, mesmo que eu espere alguns segundos, feche o arquivo ou até mesmo feche o aplicativo. Eu tentei com o Notepad, Notepad ++, Paint, cópia de arquivo no Explorer e um aplicativo de leitura / gravação de arquivo UWP ingênuo. Fiquei perplexo quando vi pela primeira vez esse comportamento e não entendi por que, em 2017, você ainda não pode confiar em seus arquivos salvos depois de uma perda repentina de energia.
- Você deve esperar que os arquivos se corrompam assim em uma perda repentina de energia?
- Quando e como você sabe se um arquivo é mantido "real" em uma unidade de disco rígido?
- Por que os arquivos ainda são corrompidos dessa forma e quais redes de segurança devem evitar isso?
- Se houver redes de segurança envolvidas em que circunstâncias elas podem falhar?
Eu imagino que os arquivos não sejam realmente gravados em seu local designado ao usar uma operação file_write () porque há algum cache e journaling envolvidos e, no final, o sistema operacional e / ou o controlador de disco decidem quando isso é feito. Mas eu pensei que o diário em particular foi inventado para evitar isso. E a gravação real do arquivo deve acontecer ao chamar uma operação file_flush () ou file_close ().
Atualização: há uma opção no Windows - > Gerenciador de dispositivos - > Unidades de disco - > MyDiskDrive - > Propriedades - > Políticas - > [x] Ative o cache de gravação no dispositivo
Improves system performance by enabling write caching on the device,
but a power outage or equipment failure might result in data loss
or corruption
Isso corresponde exatamente ao comportamento descrito acima, exceto se eu desabilitar o cache de gravação, fazer uma reinicialização limpa e testar novamente, os arquivos ainda ficarão corrompidos. WTF?