Java:从当前src目录读取图像

时间:2018-12-12 10:54:50

标签: java image bufferedreader filereader bufferedimage

我也想从java class文件所在的当前src目录中加载图像。但是,我总是得到 IOException ..

又如何确保文件在 Mac / Linux和Windows 上正确加载?

到目前为止,我的代码:

String dir = System.getProperty("user.dir") + "/Logo_transparent.png";
File imageFile = new File(dir);
BufferedImage bufferedImage = null;

try {
    bufferedImage = ImageIO.read(imageFile);
} catch (IOException e) {
    System.out.println(e.getMessage());
    System.out.println(dir);
    System.out.println();
}

IOException消息:

无法读取输入文件!

(我的路径正确-是因为Google和云端硬盘之间的空间吗?)

/ Users / myMac / Google云端硬盘/Privat/Programming/Logo_transparent.png

致以问候,谢谢!

3 个答案:

答案 0 :(得分:0)

我认为这是因为您没有创建文件,如果不存在此文件,则可以使用此代码来创建文件

if(!imageFile.exists()) imageFile.createNewFile();

您的代码将如下所示

String dir = System.getProperty("user.dir") + "/Logo_transparent.png";
File imageFile = new File(dir);
BufferedImage bufferedImage = null;
try {
    if(!imageFile.exists()) imageFile.createNewFile();
    bufferedImage = ImageIO.read(imageFile);
} catch (IOException e) {
    System.out.println(e.getMessage());
    System.out.println(dir);
    System.out.println();
}

此外,您不应该像这样连接子文件,而是将其作为第二个参数传递。

File imageFile = new File(System.getProperty("user.dir"), "Logo_transparent.png");

答案 1 :(得分:0)

如果图像文件将与类文件打包在一起(例如在同一个.jar中),则不应使用File,而应将其作为资源阅读:

bufferedImage = ImageIO.read(this.getClass().getResourceAsStream("/Logo_transparent.png"));

在文件名前注意'/'。这意味着要搜索类路径的根路径。 如果您指定不带/,它将在这个(当前类)的包中搜索

this.getClass().getResourceAsStream("Logo_transparent.png")

答案 2 :(得分:-1)

您可以尝试建立here之类的图片的绝对路径,然后再读取。