当我使用getResourceAsStream读取Android Studio中的属性文件时,获取“null”

时间:2014-09-23 13:45:38

标签: java android

我最近刚开始使用Android Studio进行编程学习。

我今天遇到了一个问题,就是不断得到" null"当我使用getResourceAsStream从JUNIT TEST读取属性文件时。

我曾经在" src"下找到.properties文件。我使用Eclipse时的目录。但是在Android Studio中,它不会起作用。

以下是名为BeanFactory的类的一部分代码:

private static Properties properties;

static {
    properties = new Properties();
    InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
    try {
        properties.load(is);
    }catch (IOException e) {
        e.printStackTrace();
    }
}

在Eclipse中,我找到了src下的prop文件,它运行得很好。

但在Android Studio中,我尝试过将#34; bean.properties"文件在几个不同的目录中。比如/ src,或/ src / main / java,什么都没有用。

我应该把prop文件放在哪里?我有什么配置吗?

3 个答案:

答案 0 :(得分:1)

在某些情况下,无法接受将资源置于资产中。我通过将所需的资源打包到特殊的jar文件中并将这个jar放入libs目录来解决这个问题。因此你仍然可以通过标准的Java技术访问它们。

答案 1 :(得分:0)

有两个问题。通常,资源存储在jar中,包含已编译的.class文件。 getResourcegetResourceAsStream是类的方法。在该类的jar中搜索资源(通常)。因此继承getClass().getResource("...")可能会很危险。

第二个更严重的缺陷是,路径相对到类的包(目录),除非你使用&#34; /..."。< / p>

另一种方法是使用ResourceBundle而不是Properties。 ResourceBundle为* .properties提供了一个PropertiesResourceBundle。

ResourceBundle properties = ResourceBundle.getBundle("bean");

答案 2 :(得分:-1)

试试这个:
1.在app / src / main / assets中输入你自己的bean.properties文件 2.将代码更改为:

private static Properties prop;

static {
    prop = new Properties();
    try {
        InputStream is = IWorkApplication.getInstance().getResources().getAssets().open("bean.properties", Context.MODE_PRIVATE);
        prop.load(is);
    } catch (IOException e) {
        e.printStackTrace();
    }

PS。IWorkApplication.getInstance()在我自己的应用程序类中定义 希望有用