Java进度条帮助
我需要为以下任务延迟实现一个进度条Java进度条帮助,java,progress-bar,fileoutputstream,Java,Progress Bar,Fileoutputstream,我需要为以下任务延迟实现一个进度条 FileOutputStream Fos= new FileOutputStream(FilePath); byte buffer[]=Services.downloadFile(FilePath); Fos.write(buffer); 现在,我如何知道该文件已下载了多少以更新进度条?这并不容易,因为服务。downloadFile()不会将文件分块提供给您。如果你有一个循环,它会很简单 如果您可以更改API,我建议您这样更改: Services.downl
FileOutputStream Fos= new FileOutputStream(FilePath);
byte buffer[]=Services.downloadFile(FilePath);
Fos.write(buffer);
现在,我如何知道该文件已下载了多少以更新进度条?这并不容易,因为
服务。downloadFile()
不会将文件分块提供给您。如果你有一个循环,它会很简单
如果您可以更改API,我建议您这样更改:
Services.downloadFile(File, OutputStream);
然后让downloadFile()
将文件写入流中。现在,您可以通过重载各种版本的write()
来包装流并计算写入的字节数
[EDIT]我看到服务
是一个RMI代理。在这种情况下,您不能使用上述方法。相反,它变得更加复杂:
你需要在你的服务器上有一个下载池(想想“地图”)。该池允许您为每次下载请求另一个数据块
因此,在服务器上,您需要:
byte[]read()
方法的对象read()
方法返回缓冲区的内容并将其清除read()
。API类似于read(key)
,服务器在映射中查找密钥,然后在下载对象上调用read()
Services
类从何而来?我使用的是RMI,服务是一个代理,这段代码就像在客户端上一样,我正在使用RMI从服务器请求一个文件