将图像写入java项目中的文件夹

时间:2014-03-28 16:36:27

标签: java directory

我正在做一个java项目,其中我正在从项目中的文件夹中读取图像,但我无法将图像文件写入同一文件夹中,我得到一个例外,例如资源未找到

我可以使用项目中的文件夹中的图像,如:

jMenuItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imageselection/Images/open.png")));

当我尝试将图像写入相同的文件夹时,例如k是BufferedImage

 ImageIO.write( k, "jpg", new File("D:/pass.jpg"));

效果很好,但是当我写入

ImageIO.write( k, "jpg", new File("/imageselection/Images/open.png"));

它不起作用。

" / imageselection /图片"是我项目中的一个文件夹。

如何解决?

2 个答案:

答案 0 :(得分:2)

ImageIO.write( k, "jpg", new File("./imageselection/Images/open.png"));

会工作,你忘记添加'。'

答案 1 :(得分:2)

如果使用getResource URL,则URL不一定在文件系统上。如果您将应用程序编译为.jar文件(zip格式),那么它就是jar zip中的文件。所以对于资源,人们不能写。

可行的解决方案是(例如):

  • 制作应用程序数据目录;
  • 首先尝试在File;
  • 找到图像
  • 否则将图像作为资源加载;
  • 写入应用数据目录。

    File appDataDir = new File(System.getProperty("user.home") + "/MyApp");
    appDataDir.mkdirs();