2016-03-18 11 views
0

Ich brauche Dateien von einem Ort zum anderen auf dem Unix-Rechner zu bewegen und ich den Code unten mit dem Schritt auszuführen:Überprüfen Sie, ob Datei verschieben von Dateien von Java-nio gelang

Path sourcePath = Paths.get(infaFileOut); 
Path destinationPath = Paths.get(fileOut); 
Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); 

Sobald die Datei Im Ziel muss ich noch etwas weiter bearbeiten. Ich mache den Code 10 Sekunden lang schlafen, so dass der Umzug bereits vor der Verarbeitung abgeschlossen sein sollte. Gibt es einen besseren Weg, um sicherzustellen, dass die Verschiebung erfolgreich war, bevor der Rest des Codes ausgeführt wird?

+8

Ich verstehe nicht. Nach 'Files.move' wurde entweder die Datei korrekt verschoben oder eine Ausnahme ausgelöst. – Tunaki

+0

Es gibt mehrere Möglichkeiten, dies zu implementieren. Sie können nach dem Verschieben eine Überprüfung durchführen, um zu überprüfen, ob die neuen Dateien am neuen Speicherort vorhanden sind. Ein erfolgreicher Wert wird nur dann an den Hauptprozess zurückgegeben, wenn alle Dateien entsprechend verschoben wurden. Auf diese Weise starten Sie den 2. Teil der Verarbeitung erst, wenn er abgeschlossen und als erfolgreich verifiziert wurde. – ManoDestra

Antwort

0

eine Suche vor der Veröffentlichung:

Quellen:

  • How to move directories using jdk7
  • Moving files from one directory to another with Java NIO

    Path sourcePath = Paths.get(infaFileOut); 
    Path destinationPath = Paths.get(fileOut); 
    try{ 
    Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING); 
    } catch (IOException e) { 
        //this is where the error will be thrown if the file did not move properly 
        //(null pointer etc...), you can place code here to run if there is an error 
        e.printStackTrace(); 
    } 
    

    Wenn Ihre persönlichen paranoid versuchen alles ausdrucken:

    Path sourceDir = Paths.get("c:\\source"); 
        Path destinationDir = Paths.get("c:\\dest"); 
    
        try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(sourceDir)) { 
         for (Path path : directoryStream) { 
          System.out.println("copying " + path.toString()); 
          Path d2 = destinationDir.resolve(path.getFileName()); 
          System.out.println("destination File=" + d2); 
          Files.move(path, d2, REPLACE_EXISTING); 
         } 
        } catch (IOException ex) { 
         ex.printStackTrace(); 
        }