确定 InputStream 的大小

新手上路,请多包涵

我目前的情况是:我必须读取一个文件并将内容放入 InputStream 。之后,我需要将 InputStream 的内容放入一个字节数组中,该数组需要(据我所知) InputStream 的大小。有任何想法吗?

根据要求,我将显示我从上传的文件创建的输入流

InputStream uploadedStream = null;
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
java.util.List items = upload.parseRequest(request);
java.util.Iterator iter = items.iterator();

while (iter.hasNext()) {
    FileItem item = (FileItem) iter.next();
    if (!item.isFormField()) {
        uploadedStream = item.getInputStream();
        //CHANGE uploadedStreambyte = item.get()
    }
}

该请求是一个 HttpServletRequest 对象,类似于 FileItemFactoryServletFileUpload 来自 Apache Commons FileUpload 包。

原文由 ChronoXIII 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

我只是想补充一点,Apache Commons IO 具有流支持实用程序来执行复制。 (顺便说一句,将文件放入输入流是什么意思?你能告诉我们你的代码吗?)

编辑:

好的,你想对项目的内容做什么?有一个 item.get() 它以字节数组的形式返回 整个事物。

编辑2

item.getSize() 将返回上传的 文件大小

原文由 akarnokd 发布,翻译遵循 CC BY-SA 2.5 许可协议

这是一个非常古老的线程,但当我用谷歌搜索这个问题时,它仍然是第一个弹出的东西。所以我只想补充一点:

 InputStream inputStream = conn.getInputStream();
int length = inputStream.available();

为我工作。而且比这里的其他答案简单得多。

警告 此解决方案不提供有关流总大小的可靠结果。除了 JavaDoc:

请注意,虽然 {@code InputStream} 的某些实现会返回 * 流中的总字节数,但很多不会。

原文由 W. B. Reed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题