Java écrire un fichier-ignorer le cache du disque système


Je souhaite écrire un fichier sur le disque et je sais que lorsque l'opération writeFile() est revenue, le fichier a définitivement été écrit sur le disque et a été écrit correctement.

Maintenant, je peux faire une sorte de vérification CRC sur le contenu après que le fichier a été écrit (lire le fichier et comparer) mais je m'inquiète de la mise en cache du disque système.

Existe-t-il un moyen d'écrire le fichier, de sauter le cache disque ou de vider le cache disque de Java?

Je n'ai délibérément pas spécifié un environnement parce que ce serait bien d'avoir une solution inter-environnement. Sinon, mon environnement est basé sur unix.

Author: Cheetah, 2014-10-03

1 answers

FileChannel.force() veillera à ce que toutes les données ont fait sur le disque avant de revenir.

À partir du API doc :

Force toute mise à jour du fichier de ce canal à être écrite dans le stockage l'appareil qui la contient.

Si le fichier de ce canal réside sur un périphérique de stockage local, alors quand cette méthode retourne, il est garanti que toutes les modifications apportées au fichier depuis ce canal a été créé, ou depuis cette dernière méthode a été invoquée, aura été écrit à cela appareil. Ceci est utile pour assurer cette information critique n'est pas perdue en cas de plantage du système.

Vous pouvez obtenir un des fichiers de canal à partir de RandomAccessFile ou FileOutputStream, via getChannel().

 0
Author: Chris K, 2014-10-03 09:51:14