Java输入== null为什么?

时间:2014-04-22 19:30:31

标签: java input

我使用一种简单的方法来获取项目的资源。我正在使用Eclipse,而且我有一个' res'用于保存所需文件的文件夹。这是我加载东西的方式,例如' puppy.png'就在我的res文件夹中(没有子文件夹):

String path = "/puppy.png";
try {
    BufferedImage image = ImageIO.read(getClass().getResourceAsStream(path));
} catch(Exception ex) { ex.printStackTrace(); }

有时候我得到一个输入== null错误,有些人没有!不像这次加载puppy.png,但下次它不会赢。对于某些类,它总是正确加载,而对于其他类,我总是会收到此错误。任何人都可以解释为什么会发生这种情况,我该如何修复它,但仍然使用getResourceAsStream()方法?

2 个答案:

答案 0 :(得分:1)

请查看How to retrieve image from project folder?

我没有提到从不同路径读取图像的方法。

你可以尝试任何一个

// Read from same package 
ImageIO.read(getClass().getResourceAsStream("c.png"));

// Read from absolute path
ImageIO.read(new File("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.png"));

// Read from images folder parallel to src in your project
ImageIO.read(new File("images\\c.jpg"));

在您的情况下,图片必须位于同一个包中,而不是前缀/

答案 1 :(得分:0)

请注意,如果资源返回null(意味着它不存在),您将收到此错误。

检查返回的输入如下:

String path = "/puppy.png";
try {
    InputStream is = getClass().getResourceAsStream(path);
    if (is == null) {
        //resource doesn't exist
    } else {
        BufferedImage image = ImageIO.read(is);
    }
} catch(Exception ex) { ex.printStackTrace(); }

请注意,您很可能应该使用String path = "puppy.png",因为您已经在项目文件夹的内容中。