File.rename () en Java – est-ce une opération atomique?

Duplication possible:
Comment renommer atomiquement un fichier en Java, même si le fichier dest existe déjà?

Je travaille avec un processus qui pourrait être tué en plein travail. Je veux renommer un fichier. Le renommage de Java est-il une opération atomique?

Je suis intéressé par le cas de Linux, HP-UX, Solaris et AIX.

L’opération Rename peut ou peut ne pas être atomique et peut ou non réussir si un fichier ou un répertoire existe déjà sous le nom de la cible. Unix doit exécuter deux opérations distinctes. Il faut d’abord tester si un fichier existe sous le nom de la cible. Ensuite, si ce fichier n’existe pas, vous pouvez continuer et renommer le fichier source en nom cible. Entre ces deux opérations, un nouveau fichier peut être créé sous le nom de la cible et, comme l’appel système rename () est atomique et détruit la cible, ce nouveau fichier sera supprimé.

Non.

Au moins parce que VM peut être tué exactement après avoir laissé votre code (après avoir entré File.rename ()) et avant que le code File.rename () ne commence à s’exécuter.