Déplacement de fichiers d'un répertoire à un autre avec Java NIO
Je suis en utilisant le NIO bibliothèques, mais j'ai reçu un étrange message d'erreur lorsque j'essaie de transférer des fichiers d'un répertoire à un autre.
String yearNow = new SimpleDateFormat("yyyy").format(
Calendar.getInstance().getTime());
try {
DirectoryStream<Path> curYearStream =
Files.newDirectoryStream(sourceDir, "{" + yearNow + "*}");
//Glob for current year
Path newDir = Paths.get(sourceDir + "//" + yearNow);
if (!Files.exists(newDir) || !Files.isDirectory(newDir)) {
Files.createDirectory(newDir);
//create 2014 directory if it doesn't exist
}
}
Itérer sur les éléments qui commencent par "2014" et de les déplacer dans le nouveau répertoire (newDir, qui est aussi appelé à 2014)
for (Path p : curYearStream) {
System.out.println(p); //it prints out exactly the files that I need to move
Files.move(p, newDir); //java.nio.file.FileAlreadyExistsException
}
- Je obtenir de l'île de java.nio.fichier.FileAlreadyExistsException parce que mon dossier (2014) existe déjà. Ce que je veux faire est de déplacer tous les fichiers qui commencent par "2014" à l'INTÉRIEUR de l'2014 répertoire.
OriginalL'auteur Gregg1989 | 2014-03-12
Vous devez vous connecter pour publier un commentaire.
Fichiers.déplacer
n'est pas équivalente à lamv
de commande. Il ne les détecte pas que la destination est un répertoire et de déplacer des fichiers dans.Vous avez à construire le plein chemin d'accès de destination, fichier par fichier. Si vous souhaitez copier
/src/a.txt
à/dest/2014/
, le chemin de destination doit être/dest/2014/a.txt
.Vous voudrez peut-être faire quelque chose comme ceci:
OriginalL'auteur Stuart Caie
Mieux de ne pas revenir à java.io.Fichier et l'utilisation NIO à la place:
OriginalL'auteur Andrew
À l'aide de
java.io.File
, son aussi simple que cela:OriginalL'auteur Jaydev