重用FileInputStream

时间:2014-10-22 17:42:31

标签: java image javafx h2 fileinputstream

对于一个大学项目,我应该编写一个数据库,将图片保存在一个h2数据库中,并在ImageView中显示它。

FileInputStream fileStream = new FileInputStream(f);

Horse h = getSelectedHorse();
h.setImage(fileStream);
Connection c = H2ConnectionFactory.getConnection();
JdbcHorseDao horseDao = new JdbcHorseDao(c);
horseDao.update(h);
c.commit();


Image img = new Image(fileStream);
horseImages.put(h, img);
imageView.setImage(img);

当我首先将图像保存到数据库时,我无法立即在图像查看器中显示它,反之亦然(当我首先显示它时,我无法将其保存到数据库中)

我的想法是,流位于文件末尾,但我无法找到如何重新定位流(没有seek()方法)

1 个答案:

答案 0 :(得分:2)

您需要重新打开该流。有random access classes允许您移动到文件中的某个位置,但是会导致性能下降。此外,您将自己进行双重阅读。

我认为最好将数据从stream读入byte [],然后将其重用于两个操作。