你可以像这样使用 aPipedInputStream
和 a PipedOutputStream
:
PipedOutputStream pos = new PipedOutputStream();
PipedInputStream pis = new PipedInputStream(pos);
readFully(handle, pos);
ImageIO.read(pis);
管道输出/输入流是链接的,因此“写入”的pos
内容可以从pis
.
编辑
乔恩指出,文件指出
不建议尝试从单个线程中使用这两个对象,因为它可能会使线程死锁。
你不应该在同一个线程中使用它。如果你想要一个单线程代码,你可以使用 ByteArrayOutputStream / ByteArrayInputStream:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
readFully(handle, baos);
ImageIO.read(new ByteArrayInputStream(baos.toByteArray());
从 JDK 1.0 开始,所有这些类(PipedInputStream
、PipedOutputStream
、ByteArrayInputStream
、ByteArrayOutputStream
)都存在。