我必须使用 MTOM 从 Web 服务下载文件。我不知道下面的实施细节。我这样做是有效的(响应是从 web 服务返回的对象,数据是javax.activation.DataHandler
类型,filePath
是文件,我想在其中保存下载的内容):
DataHandler dataHandler = response.getData();
File file = new File(filePath);
FileOutputStream fileOutputStream = new FileOutputStream(file);
dataHandler.writeTo(fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
但是,我需要弄清楚下载期间写入了多少字节。这可能需要很长时间,这种方式只是等待完成下载然后关闭输出流并继续。
我知道,我可能需要另一个线程来读取写入字节数并对其进行处理(需要它来更新 SWT 应用程序中的 progressBar)。
我的想法是以某种方式扩展 DataHandler,然后定期询问写入了多少字节)。但我是java noob,我不知道如何实现它。