我想在我的Android应用程序中处理一个属性文件。 Properties-File位于main-Folder中,位于包含其他jar文件的文件夹中。我知道,这不是最好的。
代码:
InputStream propStream=MainActivity.class.getResourceAsStream("data.properties");
Log.d("propStreamOutput",propStream.toString());
File data = new File(propStream.toString());
Reader reader;
try {
reader = new FileReader(data);
dataProp = new Properties();
dataProp.load( reader );
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
所以,第2行的日志说: libcore.net.url.JarURLConnectionImpl$JarURLConnectionInputStream@421302e8
以这种形式,logcat调用System.err:
java.io.FileNotFoundException/libcore.net.url.JarURLConnectionImpl$JarURLConnectionInputStream@42097218: open failed: ENOENT (No such file or directory)
但是当我这样评论时:
InputStream propStream=MainActivity.class.getResourceAsStream("data.properties");
Log.d("propStreamOutput",propStream.toString());
File data = new File(propStream.toString());
// Reader reader;
// try {
// reader = new FileReader(data);
// dataProp = new Properties();
// dataProp.load( reader );
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
然后没有system.err!当然,第2行的日志调用也是如此。
答案 0 :(得分:0)
如果您真的想使用 getResourceAsStream(),那么您必须将文件与 .java一起放在“ src ”文件夹中文件。
这通常是标准Java应用程序的方式,但在Android上,执行此类操作的最常用方法是通过AssetsManager将文件放在“assets”文件夹中,该文件夹可从{{{}}访问3}}或任何Activity。如下所示:
InputStream is = null;
try {
is = context.getAssets().open("data.properties");
} catch (final IOException e) {
e.printStackTrace();
} finally {
closeStreamGracefully(is);
}
答案 1 :(得分:0)
getRessourceAsStream返回一个InputStream。当您在此处调用toString时,它将返回string representation of the object。然后,当您创建数据文件并尝试读取它时,将尝试打开像@sdqzeffdfsf这样的文件。如果您想要阅读此文件中的属性,请使用Properties
Properties properties = new Properties();
properties.load(propStream);
这是标准的java。但是在Android中你通常使用AssetManager