代码如下
try {
image1=ImageIO.read(new File("e:/ecl/A/src/bomb_1.gif"));
image2=ImageIO.read(new File("e:/ecl/A/src/bomb_2.gif"));
image3=ImageIO.read(new File("e:/ecl/A/src/bomb_3.gif"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
请问  image1=ImageIO.read(new File("e:/ecl/A/src/bomb_1.gif"));  这里的路径 为什么要写e盘的这个路径 而不能写eclipse上的路径呢  我用image1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/bomb_1.gif")); 这个方法的路径可以读取图片没报错 为什么用了  image1=ImageIO.read(new File("e:/ecl/A/src/bomb_1.gif"));    这个方法后 路径要换成e盘的这个路径 而不能用"/bomb_1.gif" 这个路径呢  用后面这个路径会报错 说读取不了图片    请大神回答下   跪谢!

解决方案 »

  1.   

    new File("bomb_1.gif");
    去掉斜杠
      

  2.   

    ImageIO.read() 方法接受四种类型的参数。除了 ImageInputStream 以外,我们通常用到的是以下三种:1、File 对象。只需创建合法的 File 对象传入即可,文件路径必须是对的。这里不多说。该方法适用于绝对路径,也就是项目外的图片文件。2、InputStream 对象。该方法适合任何从流读取的图片,包括网络图片。例如:
            String url = "http://cn.bing.com/sa/simg/CN_Logo_Gray.png";
            BufferedImage image = ImageIO.read(new URL(url).openStream());
    当然读取文件也是可以的:
            BufferedImage image = ImageIO.read(new FileInputStream("F:/76.jpg"));
    如果是要读取项目内的文件,就需要通过 Class 类了:
            BufferedImage image = ImageIO.read(ImageIO.class.getResourceAsStream("/images/test.png"));
    上面的例子中,文件 test.png 放在 classpath 下的 images 目录下,而且 ImageIO.class 可以换成任何其他类。3、URL。该方法适合读取任何可从 URL 地址访问的图片,例如:
            String url = "http://cn.bing.com/sa/simg/CN_Logo_Gray.png";
            BufferedImage image = ImageIO.read(new URL(url));综上所述,可见从流读取图片是适用最广的,因为任何资源都可以转化成流来读取。