/ / Déplacement de fichiers ne fonctionne pas en java [dupliquer] - java

Déplacement de fichiers ne fonctionne pas en java [dupliquer] - java

J'essaie en boucle de déplacer des fichiers après leur chargement et leur traitement ... lorsque je teste un fichier individuellement, cela fonctionne, mais lorsque je le fais tout en même temps, cela ne fonctionne pas.

Bellow fonctionne bien, mais déplace des répertoires aussi mais je veux que seul le fichier soit déplacé.

public class moveFiles {

public static void main(String[] args) {
String getFilesFrom = "D:\show\from";
String destDir = "D:\show\to\";

File srcFile = new File(getFilesFrom);

srcFile.renameTo(new File(destDir, srcFile.getName()));

}

}

Le code que j'ai qui ne fonctionne pas la partie mobile est ci-dessous.

for (File child : file.listFiles()) {
if(extensionFilter.accept(child)) {
fr = new FileReader(child);
cm.copyIn("COPY ct"+addExtraZero+month+" FROM STDIN WITH DELIMITER "," csv", fr);
} else {
System.out.println("No File is elgible to be loaded");
break;
}
getNumberOfFilesProcessed++;
System.out.println("Loading now " + child.getName());
child.renameTo(new File(moveFilesTo, child.getName()));
}
System.out.println("Number of files Loaded is: " + getNumberOfFilesProcessed);

Le code ci-dessus est:

  • récupère les fichiers du répertoire source,
  • chargé dans la base de données
  • noms de fichiers d'impression qu'il charge
  • obtenir le nombre de fichiers chargés

Ce qui tout fonctionne ci-dessus, mais la dernière partie qui consiste à déplacer des fichiers vers un autre répertoire après le chargement ne fonctionne pas ci-dessous est la section de fichiers qui supposent de déplacer le fichier la boucle.

child.renameTo(new File(moveFilesTo, child.getName()));

se gratter la tête pendant deux heures, toute aide sera appréciée.

Réponses:

1 pour la réponse № 1

De description de File.renameTo () (c'est moi qui souligne):

L’opération de changement de nom risque de ne pas pouvoir déplacer un fichier d’un fichier à l’autre. système de fichiers à un autre, il pourrait ne pas être atomique, et il pourrait ne pas réussir si un fichier avec le chemin abstrait de la destination est déjà existe. La valeur de retour doit toujours être vérifiée s'assurer que l'opération de changement de nom a réussi

Ajouter:

if( !child.renameTo(new File(moveFilesTo, child.getName())) )
System.out.println("Could not move file");

Ou essayez d'utiliser move(Path, Path, CopyOption...) méthode, car cela a plus d'options (en utilisant File.toPath()).