Auf Thema antworten

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]



Oben