71 votes

Déplacer / copier des opérations sur les fichiers en Java

Y at-il une bibliothèque Java standard qui gère des opérations de fichiers courantes telles que déplacer/copier les fichiers/dossiers ?

73voto

Rigo Vides Points 1148

Voici comment procéder avec `` opérations :

41voto

erickson Points 127945

Pas encore, mais la Nouvelle NIO (JSR 203) prend en charge ces opérations.

Dans l'intervalle, il ya quelques choses à garder à l'esprit.

Fichier.renameTo généralement ne fonctionne que sur le même volume de système de fichiers. Je pense que de ce que l'équivalent d'un "mv" de commande. Utilisez si vous le pouvez, mais pour le général de copier et de déplacer de l'aide, vous aurez besoin d'avoir une solution de repli.

Quand un changement de nom ne fonctionne pas, vous devrez copier le fichier (suppression de l'original avec Fichier.supprimer si c'est un "déplacement" de l'opération). Pour ce faire, avec le plus d'efficacité, utilisez le FileChannel.transferTo ou FileChannel.transferFrom méthodes. La mise en œuvre de la plate-forme, mais en général, lors de la copie d'un fichier à un autre, les implémentations d'éviter le transport des données en arrière-et-vient entre le noyau et l'espace utilisateur, ce qui donne un gros boost de l'efficacité.

17voto

Pyrolistical Points 12457

Consultez : http://commons.apache.org/io/

Il a copie, et comme il est indiqué le JDK a déjà déplacer.

N’implémentez votre propre méthode de copie. Il y a tant de flottant là-bas...

10voto

ntg Points 498

Les réponses précédentes semblent être dépassées.

Java Fichier.renameTo() est probablement la solution la plus simple pour API 7, et semble bien fonctionner. Attention, IL NE jette PAS des EXCEPTIONS, mais renvoie la valeur vrai/faux!!!

Note qu'il semble y avoir des problèmes avec elle dans les versions précédentes (le même que NIO).

Si vous avez besoin d'utiliser une version précédente, cochez ici.

Here's an example for API7:
        File f1= new File("C:\\Users\\.....\\foo");
        File f2= new File("C:\\Users\\......\\foo.old");
        System.err.println("Result of move:"+f1.renameTo(f2));

Sinon:

    System.err.println("Move:" +f1.toURI() +"--->>>>"+f2.toURI());
    Path b1=Files.move(f1.toPath(),  f2.toPath(), StandardCopyOption.ATOMIC_MOVE ,StandardCopyOption.REPLACE_EXISTING ););
    System.err.println("Move: RETURNS:"+b1);

8voto

Andrew McKinlay Points 901

Bibliothèque de goyave de Google a également ceux-ci :

http://Guava-Libraries.googlecode.com/SVN/Trunk/javadoc/com/Google/common/IO/files.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X