2010-01-18 5 views
3

Puis-je utiliser un utilitaire pour renommer un fichier force de Java.io?
Je comprends que Java 7 a ces caractéristiques, mais je ne peux pas l'utiliser ...
Si je fais unForce renommer un fichier en Java

File tempFile = File.createTempFile(); 
tempFile.renameTo(newfile) 

et si newfile existe alors sa tombe en panne.

Comment faire un changement de nom?

Répondre

5

Je pense que vous devez le faire manuellement - cela signifie que vous devez vérifier si le nom de la cible existe déjà en tant que fichier et le supprimer avant d'effectuer le véritable changement de nom.

Vous pouvez écrire une routine, de le faire:

public void forceRename(File source, File target) throws IOException 
{ 
    if (target.exists()) target.delete(); 
    source.renameTo(target) 
} 

L'inconvénient de cette approche est que après la suppression et avant de renommer un autre processus pourrait créer un nouveau fichier avec le nom.

Une autre possibilité pourrait donc être de copier le contenu de la source dans le fichier cible et de supprimer le fichier source par la suite. Mais ce serait manger plus de ressources (en fonction de la taille du fichier) et devrait être fait seulement, si la possibilité de recréation du fichier supprimé est probable.

+0

je voulais éviter cette condition de course ... –

+0

Ensuite, essayez la seconde solution, copiez le contenu et supprimer l'ancien fichier. Dois-je fournir un exemple de code? – Mnementh

0

Vous pouvez toujours supprimer newFile premier:

File newFile = ... 
File file = ... 

newFile.delete(); 
file.renameTo(newFile);