我使用CXF / MTOM创建了一个用于传输大文件(超过700Mo)的Web服务,我设法将文件传输到服务器,现在我的问题是优化在磁盘中写入数据,我将举例:
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);
上传700Mo需要2分钟。
其他有效方法是什么?
感谢
答案 0 :(得分:2)
我建议您使用 Apache Commons IO 的 IOUtils 类 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);