我需要在不创建File实例的情况下获取InputStream的字节大小。有没有办法使用Java NIO?
答案 0 :(得分:24)
一般InputStream
?您必须继续读取和读取(例如,反复进入相同的缓冲区),计算您读取的字节数,直到您到达流的末尾。
当然,您将无法自行阅读数据...如果您想这样做,您需要在阅读时保留数据,例如:将其复制到ByteArrayOutputStream
。
(如果你能够在计算长度的同时处理数据,那就这么做 - 当你用循环读取数据时,每次读入同一个缓冲区,只需增加一个计数器来记录如何你读过的很多。你还没有真正向我们提供有关你想用流做什么的任何信息。)
答案 1 :(得分:6)
原则上不可知(考虑一个永不停止写作的同伴),你不需要它。只需使用固定大小的缓冲区读取和写入循环。 NIO没有提供任何神奇的解决方案。
答案 2 :(得分:1)
答案 3 :(得分:-2)
您可以使用Utils.java的getBytes(inputStream)获取InputStream的大小,请查看以下链接