我最近刚开始使用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文件放在哪里?我有什么配置吗?
答案 0 :(得分:1)
在某些情况下,无法接受将资源置于资产中。我通过将所需的资源打包到特殊的jar文件中并将这个jar放入libs目录来解决这个问题。因此你仍然可以通过标准的Java技术访问它们。
答案 1 :(得分:0)
有两个问题。通常,资源存储在jar中,包含已编译的.class文件。
getResource
和getResourceAsStream
是类的方法。在该类的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()
在我自己的应用程序类中定义
希望有用