J'essaie de transférer des fichiers d'un répertoire à un autre. Je suis actuellement en utilisant cette méthode pour accomplir cette tâche:Remplacer le répertoire entier en ignorant les fichiers en double
File srcDir = new File("path\to\file");
File destDIr = new File("path\to\file");
File.Utils.copyDirectory(srcDir, destDir);
Mais ce que je veux est de ne pas écraser les fichiers qui existent déjà dans le DestDir avec les fichiers du SRCDIR.
Par exemple, si j'ai un struct fichier comme:
├───srcDir
│ ├───this.txt
│ ├───hello.txt
│ ├───main.java
├───destDir
│ ├───this.txt
Je veux copier hello.txt
et main.java
mais je ne veux pas copier/mise à jour/remplacer this.txt
Je pensais que je pouvais il suffit de vérifier si le fichier existe avec quelque chose comme
if(f.exists() && !f.isDirectory())
mais cela semble un peu hacky et ne fonctionne pas comme je l'ai prévu.
Je suis à la recherche d'un moyen commun et simple de le faire, merci.
Existe-t-il une solution qui pourrait également fonctionner avec les sous-répertoires?
Votre code sera beaucoup plus robuste si vous utilisez le [java.nio.file] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/package -summary.html) à la place de la classe java.io.File de 20 ans. Et vous trouverez que la classe 'Files' a un certain nombre de méthodes" walk "qui traversent une arborescence récursivement. – VGR
peut-être essayer de préparer deux ensembles de noms et effectuer un complément logique, comme diff = a.clone(); diff.removeAll (b); –
@VGR J'essayais cela avant mais je reçois une exception filealreadyexists –