这是一个服务器,它从客户端接收文件。它接收完整的文件,但不显示进度条。我正在使用ProgressInputStream。这是我使用 SwingWorker 为进度条创建一个新线程的代码段。
SwingWorker<Void,Void> worker = new SwingWorker<Void,Void>()
{
protected Void doInBackground()
{
try {
ss = new ServerSocket(port);
s = ss.accept();
bytes = new byte[1024];
FileOutputStream fos = new FileOutputStream(new File(FileName));
DataInputStream dis = new DataInputStream(s.getInputStream());
pmis = new ProgressMonitorInputStream(frame,"Receiving",dis);
pmis.getProgressMonitor().setMillisToPopup(10);
while(pmis.read(bytes) > 0)
{
fos.write(bytes);
}
ss.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
};
worker.execute();
任何帮助将不胜感激。对不起,我的英语不好。谢谢期待。
它只会弹出"如果需要一段时间"。
铌:
-
您的复制循环是错误的。它应该是:
while ((count = pmis.read(bytes)) > 0) { fos.write(bytes, 0, count); }
count
显然是一个int
.
- 你不需要
DataInputStream
.