Java 限制读取字节数的 InputStream 包装器

Java InputStream wrapper which limits the nuber of read bytes

我们需要有一个进程“窥视”传入的 InputStream 并使用 JSON 流式解析器并确保不读取超过 XXX 个字节(即我们永远不想读取过去的字节 XX)。 理想情况下,这应该以抛出某种“软”异常的 InputStream 包装器的形式出现

InputStream limited = new SizeLimitedInputStream(realInputStrea, 500000); // max 500000 bytes
try {
    // peek the input
} catch (SizeLimitReachedException e) {
   // that's ok
}

我一直在研究现有的库或 JDK 以避免从头开始写这个,但我不知道哪个是最好的开始 class

一个来自 Apache James Github https://github.com/k4200/openmailarchiva-server/blob/b42f9e4f2b5b0fba9cae291fdfcaa1fc23ae5fa0/src/org/apache/james/util/SizeLimitedInputStream.java