java.io.datainputstream.readunsignedshort_java - ImageIO.read关闭输入流 - 堆栈内存溢出

作者在将图像和字符串写入二进制文件后,使用ImageIO.read读取图像时遇到了EOFException,因为方法自动关闭了输入流。解决方法是找到不关闭流的方式,以读取后续数据。讨论了可能的代码错误和解决方案。
摘要由CSDN通过智能技术生成

我将图像和其他数据写入二进制文件。 当我从该文件通过ImageIO.read(InputStream)读取图像时,它读取图像,可以,但是方法关闭了给定的输入流,因此我无法继续读取其他数据。

为什么会这样呢?

那么如何在不关闭流的情况下读取图像?

编辑 :这是将图像和字符串写入文件后的简单代码:

File f = new File("test.bin");

if(f.exists())

f.delete();

f.createNewFile();

DataOutputStream os = new DataOutputStream(new FileOutputStream(f));

BufferedImage img = ImageIO.read(new File("test.jpg"));

ImageIO.write(img, "jpg", os);

os.writeUTF("test string after image");

os.close();

和读取所有内容的代码:

DataInputStream is = new DataInputStream(new FileInputStream(f));

BufferedImage img = ImageIO.read(is);

String s = is.readUTF(); // on this line EOFException occurs

System.out.println(s);

NetBeans输出:

Exception in thread "main" java.io.EOFException

at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)

at java.io.DataInputStream.readUTF(DataInputStream.java:589)

at java.io.DataInputStream.readUTF(DataInputStream.java:564)

at mediamanager.Main.test(Main.java:105)

at mediamanager.Main.main(Main.java:44)

可能是我做错了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值