当前位置: 首页 > 知识库问答 >
问题:

添加nio文件复制进度条

潘驰
2023-03-14

我想知道是否有办法更新使用NIO库文件的进度条。复制,用于下载工作线程中的文件。代码如下。

Task<Void> task = new Task<Void>() {
        @Override
        public Void call() {

            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    try (InputStream in = download.openStream()){
                        Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING);
                    }catch(Exception e){
                        System.out.println("file download");
                    }
                }
            });

            Platform.runLater(
                    () -> view.enableButton()
            );
            return null;
        }
    };

有一个进度条,我已经尝试绑定到任务,但似乎所做的只是导致一个错误,并立即重新启用下载按钮。

共有1个答案

杜思远
2023-03-14

使用updateProgress(当前进度,最大值)在call()方法中更新进度

还将您的任务绑定到进度栏

ProgressBar bar = new ProgressBar();
bar.progressProperty().bind(task.progressProperty());
new Thread(task).start();

 类似资料:
  • 经过一番摆弄,我意识到我可能可以使用类似的代码(这段代码可能工作,也可能不工作--我只是快速地记下它,这样我就不会忘记它,它还没有经过测试)。这将允许我更新每个复制文件的进度条。 编辑#2: 我在代码上做了更多的工作,我相信我已经解决了大部分问题。现在的问题是关于SwingWorker的,我相信我需要它来在后台运行长期方法。否则,GUI将变得没有响应(Java文档中有很多关于这一点的文档)。然而,

  • 我尝试使用这个存储库https://github.com/ctongfei/progressbar为我的光线跟踪添加进度条。当我运行测试时,我得到很多异常。 我完全不知道它们是什么意思,也不知道如何开始修复它们。 我的测试代码: 我收到的错误消息: 2019年7月15日9:14:57PM org . jline . utils . log logr警告:无法检索哑色Java . io . io类型

  • 问题内容: 使用复制大型文件时,您没有任何指示操作进展的信息。 我已经把一些作品- 它使用一个简单的进度条类(简单的返回一个简单的ASCII进度栏,作为一个字符串),和一个环,并做实际的复制。它显示进度条,使用它有点黑,但它可以工作。 您可以在github上查看代码(在上下文中) 是否有任何内置模块可以更好地做到这一点?可以对此代码进行任何改进吗? 问题答案: 两件事情: 我想使默认的块大小, 很

  • 问题内容: 我一直在尝试了解如何添加进度条,我可以在正在实现的GUI中创建一个进度条,并使其显示出来,即使在通过http://docs.oracle.com/javase/tutorial/uiswing/components检查之后/progress.html对于如何将方法设置为任务,以便可以创建用于运行方法的进度栏,我仍然不清楚。请有人可以尝试向我解释这一点,还是可以发布一个示例,该示例在GU

  • 问题内容: 请告诉我最好/最快的方法: 1)将很小的二进制文件加载到内存中。例如图标; 2)加载/读取大小为512Mb +的非常大的二进制文件。也许我必须使用内存映射的IO? 3)当您不想考虑大小/速度而只能做的事情时,通常选择:将所有字节读入内存? 谢谢!!! 问题答案: 对于内存映射文件,java有一个nio包:Memory Mapped Files 检出小文件的字节流类:字节流 检出较大文件

  • 所以我正在做一个脚本,把两个数字(十进制数字)加在一起,这我遇到了一个问题。 http://jsfidle.net/derekl/esqnc/ 我做的剧本,结果很好: 但很快我就明白了: