Запись из 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);