我需要在不创建 File 实例的情况下获取 InputStream 的大小(以字节为单位)。有没有办法使用 Java NIO 来做到这一点?
问问题
52182 次
4 回答
26
将军的InputStream
?您必须不断地阅读和阅读(例如,一遍又一遍地读入同一个缓冲区)计算您已经阅读了多少字节,直到您到达流的末尾。
当然,您将无法读取数据本身......如果您想这样做,您需要在读取数据时保留数据,例如将其复制到ByteArrayOutputStream
.
(如果您能够在计算长度的同时处理数据,那么就这样做 - 当您使用循环读取它时,每次都读入同一个缓冲区,只需增加一个计数器来记录您的多少”已阅读。您并没有真正向我们提供有关您想对流做什么的任何信息。)
于 2012-07-31T18:57:33.663 回答
6
原则上它是不可知的(考虑一个永不停止写作的同行),你也不需要它。只需使用固定大小的缓冲区在循环中读取和写入。NIO 没有提供任何神奇的解决方案。
于 2012-07-31T23:00:22.870 回答
1
于 2012-07-31T19:57:54.147 回答
-2
您可以使用 Utils.java 的 getBytes(inputStream) 获取 InputStream 的大小检查以下链接
于 2013-03-21T12:15:33.603 回答