javafx从Filevisitor

时间:2015-11-16 22:33:04

标签: java javafx javafx-2 java-7 filevisitor

我使用java 7 Files.walkFileTree方法遍历整个磁盘。我试图从我自定义的FileVisitor的visitFile()方法更新我创建的UI类中的javafx标签和进度条。   在javafx UI类中,我创建任务并启动它。我做了一些研究,有人建议我实现FileVisitor并扩展任务,以便我可以从visitFile()更新Mongess()但我尝试了它并且它不起作用。 Javafx UI类:

          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;
            }

          }

所以我的问题是 - 真的有办法做到这一点吗?我在这里读到有关使用swing进行此操作(他们使用发布),但使用javafx它似乎不起作用。

提前谢谢。

0 个答案:

没有答案