这是一个服务器,它从客户端接收文件。它接收完整的文件但进度条没有显示。我正在使用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();
任何帮助将不胜感激。对不起,我的英语不好。感谢您的期待。
答案 0 :(得分:0)
它只会弹出'如果需要一段时间'。
NB:
您的复制循环错误。它应该是:
while ((count = pmis.read(bytes)) > 0)
{
fos.write(bytes, 0, count);
}
其中count
显然是int
。
DataInputStream
。