获取Jar内部文件的路径

时间:2013-05-20 16:51:25

标签: java image jar

我正在尝试访问位于正在运行的jar中的图像。

这是我的代码:

Image image = Toolkit.getDefaultToolkit().getImage(
            getClass().getResource("/res/sprites/"));

上面的代码绝对正常。

我遇到的问题是将其转换为可供BufferedImage对象使用的可读字符串。

这是我的代码:(pathRelativeToThis是一个字符串)

Image path = Toolkit.getDefaultToolkit().getImage(
            getClass().getResource("/res/sprites/" + pathRelativeToThis));
    String image = "file://" + path.toString();

    URL url = new URL(image);
    BufferedImage img = ImageIO.read(url);

这不起作用,并将javax.imageio.IIOException: Can't get input stream from URL!视为错误。

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以这样做并直接使用流:

InputStream is = getClass().getResourceAsStream("/res/sprites/" + pathRelativeToThis);
BufferedImage img = ImageIO.read(is);
is.close();

您是否尝试过直接将资源URL传递给ImageIO?

URL url = getClass().getResource("/res/sprites/" + pathRelativeToThis)
BufferedImage img = ImageIO.read(url);

答案 1 :(得分:1)

删除路径并尝试执行此操作

String image = "file://" + getClass().getResource("/res/sprites/" + pathRelativeToThis);
URL url = new URL(image);
BufferedImage img = ImageIO.read(url);