Мне нужно загрузить файл с веб-службы с помощью MTOM. Детали реализации ниже не известны мне. Я делаю это так, что работает (ответ - это объект, возвращаемый из веб-сервисов, а данные - это код 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();
Но мне нужно выяснить, сколько байтов было написано во время загрузки. Это может занять много времени, поэтому просто ждет завершения загрузки, а затем закрывает выходной поток и продолжается.
Я знаю, мне, вероятно, понадобится еще один поток для чтения количества написанных байтов и что-то с ним сделать (нужно его для обновления progressBar в приложении SWT).
Моя идея заключалась в том, чтобы каким-то образом расширить DataHandler, а затем периодически спрашивать, сколько байтов написано). Но я java noob, и я не знаю, как это реализовать.