Je dois déplacer un grand nombre de fichiers (presque 60 Mo chacun) du dossier A vers le dossier B. Dossier B est un dossier ai/p pour une tâche programmée Spring . il choisit ces fichiers et commence le traitement en parallèle. J'utilise les méthodes utilitaires de fichiers de Guava pour déplacer les fichiers.Files.move() de Guava déplace-t-il les fichiers ou les copie-t-il?
Files.move(sourceFile,targetFile,Charsets.UTF_8);
Je ne vois erreur dans ma classe TaskScheduler que le fichier est pas là pour lire
à org.apache.commons.io.FileUtils.openInputStream (FileUtils.java:299) ~ [ commons-io-2.4.jar: 2.4] à org.apache.commons.io.FileUtils.lineIterator (FileUtils.java:1856) ~ [commons-io-2.4.jar: 2.4] à com.varun.processor. readFile (Processor.java:342) ~ [classes /:?]
Mon intuition est que le fichier est dans la copie et donc le thread programmé de Spring n'a pas pu acquérir le verrou pour le lire. Selon le document de Guava, sa méthode de déplacement se comporte comme la commande mv sous unix mais je vois le code comme copie dans le goyavier.
Quelqu'un peut-il suggérer une meilleure façon de déplacer des fichiers sur le système unix à partir de l'application de printemps Où o répertoire/p est i/p pour un autre processus en aval.
copie seulement si la 'RenameTo' échoue. –
Voici comment 'mv' fonctionne. S'il ne peut pas déplacer le fichier sur place, il crée une copie, puis supprime l'original. –