例えば、
Channels.newChannel(url.openStream());
この 1 行でストリームを開き、そこからデータを取得しますが、進行状況を確認する方法がありません。
そうする方法はありますか?
例えば、
Channels.newChannel(url.openStream());
この 1 行でストリームを開き、そこからデータを取得しますが、進行状況を確認する方法がありません。
そうする方法はありますか?
transferFrom()
またはメソッドを使用する場合transferTo()
、ファイル内の開始点と、転送するバイト数を渡す必要があります。
できることは、ファイルを 100 個の「パーツ」に分割することです。これは非常に簡単に行われます。
File f = new File(url);
int size = f.length();
ファイルのサイズが 100KB だとすると、サイズは 102400 になります。これを「パーツ」の量 (この例では 100) で割ると、「パーツ」あたり 1024 バイトになります。あとは、転送済みの「パーツ」の割合を表示するだけです。
例として
int pos = 0;
for(int x = 0 ; x < 100 /*amount of parts*/ ; x++) {
source.transferTo(0*x, 1024 /*part size*/, destination);
progress.setValue(x/100 /*amount of parts*/ *100);
}