从.apk读取文件

时间:2017-02-20 11:06:19

标签: java android swing apk

我的一个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是独立于平台的库。我想使用该库来获取文件,就像我在桌面平台等其他平台上一样。

1 个答案:

答案 0 :(得分:-1)

我试过几种方法从android项目中的jar读取文件。

最后我可以用这个来读取文件:

InputStream stream = getClass().getClassLoader().getResourceAsStream(strPath);

以下代码无效。

InputStream stream = MyFragment.class.getResourceAsStream(strPath); // fails
InputStream stream = getClass().getResourceAsStream(p_strFilePath); // fails