Java:如何计算从InputStream读取的字节数而不事先分配完整内存

Wie*_*esi 4 java stream limit

我有一个 Java 后端,用户可以将文件上传到其中。我想将这些上传的文件限制为最大大小,并希望在上传时检查上传的字节数,并在达到限制后立即中断传输。

目前,我在分配之前使用 InputStream.available() 来确定估计大小,但这似乎被视为不可靠。

有什么建议么?

Fab*_*ney 5

当您想知道已读取了多少字节时,可以使用Guava 的 CountingInputstream或Apache IO 的 CountingInputStream 。

另一方面,当您想在达到某个限制时立即停止上传时,只需在读取字节块时进行计数,并在超出限制时关闭流。

  • @Holger我没有说没有解决方案。有*有*一个解决方案。阅读直到超出配额。注意,他说的是“*当*上传发生时”,而不是之前。 (2认同)