我的一个jar 位于我的android项目的/libs
文件夹中。 jar有一些 xml文件。
我想要做的是从我的Android应用程序中的jar中读取xml
文件。
我尝试过使用以下方法:
private String loadFromJar(String p_strFileName) {
try {
String strPath = p_strFileName;
InputStream stream = this.class.getResourceAsStream(strPath);
if (stream == null) {
System.err.println(" stream is null for " + strPath);
} else {
int av = (stream.available() / 200) + 1;
int i = 0;
StringBuilder sb = new StringBuilder();
while (i <= av) {
try {
byte[] a = new byte[200];
stream.read(a);
sb.append(new String(a, "UTF-8"));
i++;
} catch (Exception e) {
break;
}
}
return sb.toString();
}
} catch (Exception e) {
Log.e(LOG_TAG, "jarfile is null for " + p_strFileName);
}
return "";
}
然而,它不起作用。
我也试过在java swing应用程序中做同样的事情而且它有效。
我猜apk文件行为与jar文件不同
我知道我可以从res文件夹或资源文件夹中读取文件。但是,这不是我的案例的解决方案。因为jar是独立于平台的库。我想使用该库来获取文件,就像我在桌面平台等其他平台上一样。
答案 0 :(得分:-1)
我试过几种方法从android项目中的jar读取文件。
最后我可以用这个来读取文件:
InputStream stream = getClass().getClassLoader().getResourceAsStream(strPath);
以下代码无效。
InputStream stream = MyFragment.class.getResourceAsStream(strPath); // fails
InputStream stream = getClass().getResourceAsStream(p_strFilePath); // fails