Hi, danke erstmal für deine Antwort, das funktioniert schonmal, danke dafür.
Ja, ich habe mehrere Verzeichnisse, die ich durchsuchen muss.
Ich habe jetzt versucht, in allen Verzeichnissen die PDFs zu zählen, aber ohne Erfolg, ich habe am Ende das Ergebnis, aber die ProgressBar wird nicht einwandfrei aktualisiert.
Ich weiss grade nicht weiter.
[code=Java]import java.io.File;
import java.util.LinkedList;
import java.util.List;
import javafx.concurrent.Task;
import javafx.concurrent.WorkerStateEvent;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
public class Controller {
@FXML
private Button startButton;
@FXML
private ProgressBar meineProzessBar;
@FXML
private Label label;
private Task<Boolean> copyWorker;
private int countPDF;
private File directory;
@FXML
private void actionStart(ActionEvent event) {
String path = "C:\\Users\\user\\eBooks\\";
directory = new File(path);
if(!directory.isDirectory())
return;
countPDF = 0;
copyWorker = createWorker(directory);
copyWorker.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
startButton.setDisable(false);
label.textProperty().unbind();
label.setText("Total wurden " + countPDF + " PDF-Dateien gefunden!");
}
});
meineProzessBar.progressProperty().unbind();
meineProzessBar.progressProperty().bind(copyWorker.progressProperty());
label.textProperty().bind(copyWorker.messageProperty());
new Thread(copyWorker).start();
startButton.setDisable(true);
}
private Task<Boolean> createWorker(File fileRoot) {
return new Task<Boolean>() {
@Override
protected Boolean call() throws Exception {
List<File> fileList = new LinkedList<>();
File[] files = fileRoot.listFiles();
for(File file : files) {
if(file.isDirectory()){
System.out.println("Ordner: " + file);
createWorker(file).run();
}
else{
fileList.add(file);
}
}
for (File file : fileList) {
String dateiName = file.getName();
if(dateiName.endsWith(".pdf")){
updateMessage(++countPDF + "");
updateProgress(countPDF, 12);
System.out.println("Datei: " + countPDF + " -> " + file);
Thread.sleep(200);
}
}
return true;
}
};
}
}[/code]