ClassLoader.class.getResourceAsStream在我的代码中不起作用

时间:2015-06-01 07:17:20

标签: java

当我加载属性文件时,下面给出的代码返回 null 。请仔细阅读代码并向我推荐更改。

    constantProp = new Properties();

    try {

        // Loads the constants.properties file
        InputStream constantPropFile = ClassLoader.class
                .getResourceAsStream("/ConstantFiles/" 
                        + ".properties");
        System.out.println(constantPropFile);
        constantProp.load(constantPropFile);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        // e.printStackTrace();
        log.equals("Constant Property file not found");

    } catch (IOException e) {
        // TODO Auto-generated catch block
        // e.printStackTrace();
        log.error("Can't Load constants.properties property  
   file ");
    }

2 个答案:

答案 0 :(得分:0)

如果您使用方法getResourceAsStream,则说明:

  

搜索顺序在{@link getResource(String)}的文档中描述。

     

用于读取资源的输入流,如果是资源则为null   无法找到

确保链接正常运行。

因此,如果您尝试从本地计算机或您已知道的路径加载属性文件,则可以使用以下代码加载属性文件:

Properties prop = new Properties();
prop.load(new FileInputStream("/ConstantFiles/.properties"));

答案 1 :(得分:0)

您似乎错过了文件名。您在代码中的注释显示“加载constants.properties文件”但您的代码正在尝试加载位于文件夹“/ ConstantFiles /”的名为“.properties”的文件。因此,您的问题似乎只是缺少文件名。

万一你不知道,“getResourceAsStream”将尝试在你的类路径中查找文件。请检查文件夹“ConstantFiles”是否在您的类路径(http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)