Ank*_*kur 6 java copy inputstream
我有一个InputStream对象,我想复制它.做这个的最好方式是什么?
数据不是来自文件,而是作为从网页发送的http表单的有效负载,我使用的是Apache Commons FileUpload lib,我的代码给了我InputStream,如下所示:...
InputStream imageStream = null;
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = new ArrayList();
items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) { // this is subject Id
if (item.getFieldName().equals("subId")) {
subId = Integer.parseInt(item.getString());
System.out.println("SubId: " + subId);
}
} else {
imageStream = item.getInputStream();
}
}
Run Code Online (Sandbox Code Playgroud)
获取imageStream的副本/副本的最佳方法是什么?
如果您希望能够再次读取流,我认为您最好的选择是将其包装InputStream在a中BufferedInputStream,然后使用BufferedInputStream mark()和reset()方法.在InputStream你有可能不会直接支持他们,因为据我的理解是从网络接收数据.
“复制”输入流的最佳方法是使用 commons-io。由于您已经使用了 commons fileupload,因此额外的依赖项不会造成损害:
但请注意,您无法真正“复制”流。您只能“使用”它(然后可以将内容存储在内存中,如果您愿意的话)