我将图像和其他数据写入二进制文件。当我从该文件通过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)
可能我做错了什么?
答案 0 :(得分:4)
此方法在读取操作完成后不关闭提供的InputStream;如果需要,调用者有责任关闭流。
强调不我的。
问题出在其他地方。可能在你的代码中。
答案 1 :(得分:0)
我可以看到这种行为的两个可能原因:
尝试ImageIO.setUseCash(false)
它可以提供帮助。