1

例えば、

Channels.newChannel(url.openStream());

この 1 行でストリームを開き、そこからデータを取得しますが、進行状況を確認する方法がありません。

そうする方法はありますか?

4

2 に答える 2

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);
}
于 2013-07-11T10:26:41.060 に答える