JavaFx - Kopiervorgang in TextField ausgeben

odbvirus

Grünschnabel
Guten tag

Ich möchte in Java den Kopiervorgang von Ordner und Dateien in einer TextArea ausgeben lassen:
In der TextArea sollte also ausgegeben werden was kopiert wurde und zwar schritt für schritt als Liste.
Als Beispiel - Wie bei einem Setup, wo angezeigt wird, welche Dateien eben grade Installiert wurden.

Durch den DirectoryChooser wird erst gewählt, in welches Verzeichnis die Ordner und Dateien kopiert werden sollen:

Versucht habe ich folgendes Beispiel:

DirectoryChooser:
Java:
@FXML
private void browseClick(ActionEvent event) {

  Stage stage = (Stage)browseClick.getScene().getWindow();
  DirectoryChooser directoryChooser = new DirectoryChooser();
  File selectedDirectory = directoryChooser.showDialog(primaryStage);

  if (selectedDirectory == null) {
    chosenDirectory.setText("No Directory selected");
  } else {
    chosenDirectory.setText(selectedDirectory.getAbsolutePath());
    chosenDirectory.getText();
    pfad = chosenDirectory.getText();
  }
}

Kopiervorgang & FolderScanner:
Java:
@FXML
private void installClick(ActionEvent event) throws Exception {

  File src = new File("src/application/zip");
  File dest = new File(pfad);

  FileUtils.copyDirectory(src, dest);

  //------------------------------------------------------- Folder & File Scanner

  try (Stream<Path> walk = Files.walk(Paths.get(pfad + "/test"))) {
    List<String> result = walk.filter(Files::isRegularFile).map(x -> x.toString() + "\n").collect(Collectors.toList());

    try (Stream<Path> walk2 = Files.walk(Paths.get(pfad + "/test"))) {
      List<String> result2 = walk2.filter(Files::isDirectory).map(x -> x.toString() + "\n").collect(Collectors.toList());
      progressTextField.setText(result2.toString().replace(",", "").replace("[", "").replace("]", "").replace(" ", "") +
                                result.toString().replace(",", "").replace("[", "").replace("]", "").replace(" ", ""));
    }
  } catch (IOException e) {
    e.printStackTrace();
  }

Leider wird mir da nur ausgegeben was momentan in dem Ordner vorhanden ist.
Wenn der Kopiervorgang länger dauert, und neue Dateien hinzugefügt werden, wird nicht upgedated, was leider nicht der sinn ist.
Durch die Ausgabe sollte dem User der Fortschritt mitgeteilt werden.

ps. Hoffe ich poste es am richtigen Ort, wenn nicht bitte verschieben :)

Gruss odbvirus
 
Möchtest du beim Kopieren diese Liste führen oder erst danach? Aktuell sieht es so aus, dass du es danach machst.
 
Zurück