Запись из Datahandler в файл

Я создал веб-сервис, используя CXF/MTOM для передачи больших файлов (более 700Mo), мне удалось перенести файл на сервер, теперь мой вопрос заключается в оптимизации записи данных на диск, я приведу примеры:

DataHandler handler = fichier.getFichier();

InputStream is = handler.getInputStream();

OutputStream os = new FileOutputStream(new File("myFile"));


byte[] buffer = new byte[BUFFER];
int bytesRead = 0;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer,0,bytesRead);
     }

Использование байтов может привести меня к OutOfMemory, поэтому я бы предпочел использовать это:

DataHandler handler = fichier.getFichier();

handler.writeTo(os);

Это займет 2 минуты для загрузки 700Mo.

Каковы другие эффективные способы?

Спасибо

1 ответ

Я предлагаю вам использовать класс IOUtils Apache Commons IO https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/package-summary.html

QN: org.apache.commons.io.IOUtils

DataHandler handler = docClient.getContent(sid, docId);

InputStream is = handler.getInputStream();
OutputStream os = new FileOutputStream(new File("C:/tmp/myFile.raw"));

// This will copy the file from the two streams
IOUtils.copy(is, os);

// This will close two streams catching exception
IOUtils.closeQuietly(os);
IOUtils.closeQuietly(is);
Другие вопросы по тегам