java - ImageIO什么时候应该停止从InputStream读取?

标签 java inputstream javax.imageio

我正在尝试制作一个通过 Java 中的 newtork 接收 JPG 图像的服务器。

isr = socket.getInputStream();
BufferedImage img = ImageIO.read(isr);

我想读完,但保持套接字连接。仅当我关闭连接时 ImageIO 才会停止。当我发送同一张图像两次时它也会停止。

最佳答案

ImageIO.read 应继续从输入流读取,直到拥有整个文件,此时停止读取。然后,调用者有责任在输入流上调用 close。

您不会从客户端向服务器发送任何数据来告诉服务器您已阅读完毕。只需关闭连接即可。

如果服务器发送相同的图像两次,或发送两个不同的图像,则必须建立两个套接字连接,或使用其他方法读取数据。据我所知,ImageIO.read 无法读取两个图像。

关于java - ImageIO什么时候应该停止从InputStream读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167798/

相关文章:

java - 如何在 JFrame 弹出错误后使主窗口处于非 Activity 状态

android - 在本地保存从 InputStream 检索到的图像

Java 使用 .jar 文件中的图像

java - 从角落绘制图像的某些部分偏移?

java - 为什么 Java stacktrace 只在 finally block 中返回失败?

java - 如何使用 java 流打印嵌套列表,其中对象包含对自身的引用列表

java - 如何从 InputStream 创建基于行的可观察对象?

java - PNG 编码器 - 添加自己的过滤器实现

java - 在这种情况下如何为hadoop编写partioner?

java - 打开多个InputStream的优点和缺点?