ネットワーク経由でファイルを転送するプロジェクトに取り組んでおり、JProgressBar
ファイル転送中の進行状況を表示するために を組み込みたいのですが、それについて助けが必要です。
master-mind
質問する
12686 次
4 に答える
3
おそらく ProgressMonitorInputStream が最も簡単だと思いますが、それで十分でない場合は、そのソース コードを調べて、必要なものを正確に取得してください。
InputStream in = new BufferedInputStream(
new ProgressMonitorInputStream(
parentComponent,
"Reading " + fileName,
new FileInputStream(fileName)
)
);
別の転送方法を使用するには、FileInputStream を適切なストリームに置き換えます。
于 2009-01-16T17:42:27.190 に答える
1
この Core Java Tech TipSwingWorker
で説明されているように、を使用する必要があるようです。Swing ワーカー スレッドの使用も参照してください。
于 2009-01-15T17:22:41.930 に答える
1
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JProgressBar;
....
public OutputStream loadFile(URL remoteFile, JProgressBar progress) throws IOException
{
URLConnection connection = remoteFile.openConnection(); //connect to remote file
InputStream inputStream = connection.getInputStream(); //get stream to read file
int length = connection.getContentLength(); //find out how long the file is, any good webserver should provide this info
int current = 0;
progress.setMaximum(length); //we're going to get this many bytes
progress.setValue(0); //we've gotten 0 bytes so far
ByteArrayOutputStream out = new ByteArrayOutputStream(); //create our output steam to build the file here
byte[] buffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = inputStream.read(buffer)) != -1) //keep filling the buffer until we get to the end of the file
{
out.write(buffer, current, bytesRead); //write the buffer to the file offset = current, length = bytesRead
current += bytesRead; //we've progressed a little so update current
progress.setValue(current); //tell progress how far we are
}
inputStream.close(); //close our stream
return out;
}
これでうまくいくと確信しています。
于 2009-01-16T22:59:24.023 に答える
0
ここにJProgressBarのチュートリアルがあります。
于 2009-01-15T16:38:52.813 に答える