来自Filevisitor的walkfiletree方法的javafx更新消息

来自Filevisitor的walkfiletree方法的javafx更新消息,java,javafx,javafx-2,java-7,filevisitor,Java,Javafx,Javafx 2,Java 7,Filevisitor,我使用java 7 Files.walkFileTree方法遍历整个磁盘。我正在尝试从自定义FileVisitor的visitFile()方法更新我创建的UI类中的javafx标签和进度条。 在JavaFXUI类中,我创建并启动任务。我做了一些研究,有人建议我实现FileVisitor并扩展任务,这样我就可以从visitFile()更新Message(),但我尝试了,但没有成功。 JavaFXUI类: FileSystemTraverse task = new FileSys

我使用java 7 Files.walkFileTree方法遍历整个磁盘。我正在尝试从自定义FileVisitor的visitFile()方法更新我创建的UI类中的javafx标签和进度条。 在JavaFXUI类中,我创建并启动任务。我做了一些研究,有人建议我实现FileVisitor并扩展任务,这样我就可以从visitFile()更新Message(),但我尝试了,但没有成功。 JavaFXUI类:

          FileSystemTraverse task = new FileSystemTraverse(client);
          // here i create label and bind it to the task
          final Thread thread = new Thread(task);
          thread.start();
FileSystemTraverse类:

          public class FileSystemTraverse extends Task implements FileVisitor<Path>
          {
          // The usual implemented methods, constructor and so on ... 

            public FileVisitResult visitFile(Path filePath, BasicFileAttributes attributes) throws IOException {
              Objects.requireNonNull(attributes);
              Objects.requireNonNull(filePath);
              if (attributes.isRegularFile()) {
                // Here I do some operations and if I found the file i need
                // I update the message (this is just an example) 
                updateMessage(filePath.toString);
              }
              return FileVisitResult.CONTINUE;
            }

            @Override
            protected Object call() throws Exception {
              Path path = Paths.get("D:\\");
              // This one below  gets updated in the UI.
              updateMessage("asdkjasdkjhakj");
              FileSystemTraverse printFiles = new FileSystemTraverse(client);
              Files.walkFileTree(path,printFiles);
              return null;
            }

          }
公共类FileSystemTraverse扩展任务实现FileVisitor
{
//常用的实现方法、构造函数等。。。
公共文件VisitResult visitFile(路径文件路径,基本文件属性)引发IOException{
对象。requirennull(属性);
Objects.requirennull(文件路径);
if(attributes.isRegularFile()){
//这里我做一些操作,如果我找到了我需要的文件
//我更新消息(这只是一个示例)
updateMessage(filePath.toString);
}
返回FileVisitResult.CONTINUE;
}
@凌驾
受保护对象调用()引发异常{
Path Path=Path.get(“D:\\”;
//下面这一个在UI中得到更新。
更新消息(“asdkjasdkjhakj”);
FileSystemTraverse printFiles=新FileSystemTraverse(客户端);
walkFileTree(路径、打印文件);
返回null;
}
}
所以我的问题是,真的有办法做到这一点吗?我在这里的某个地方读到过关于使用swing(他们使用publish)实现这一点的文章,但是使用javafx它似乎不起作用


提前谢谢。

为什么要在
调用
方法中创建一个新的
FileSystemTraverse
?你不是只想要
文件吗?walkFileTree(路径,这个)
?是的,这就是我认为可能存在的问题,但只是不知道如何将我已经创建的文件系统遍历传递到walkFileTree()。我现在刚试过,效果很好!非常感谢。