2017-11-21 2 views
1

NIOライブラリのFiles.copyを使用するプログレスバーを更新する方法があるかどうかは、ワーカースレッドでファイルをダウンロードするために使用されているのでしょうか。以下のコード。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; 
     } 
    }; 

が、私は仕事への結合を試みたプログレスバーは、ですが、やっているようだそのすべてがダウンロードボタンを再度有効にすぐにバグを引き起こすとされます。

答えて

0

あなたcall()メソッド内で使用updateProgress(current_progress, max);進行

を更新することもどこ/どのように私は、現在の進行状況になるだろう、それはfiles.copyする唯一の単一の呼び出しなので、適切

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

をプログレスバーにあなたTaskをバインド?私はプログレスバーでループを使用してファイルをダウンロードする他の方法を見てきましたが、この解決策は最も簡単に思えました。ダウンロードの進行状況を表示したいのであれば、私はここにチェックしました。 。 – msd94

+0

@ msd94進歩を得るためには、 'Files.copy'を一回呼び出す代わりに' FileInputStream.read() 'と' FileOutputStream.write() 'を使わなければならないかもしれません。 – aKilleR

関連する問題