2017-02-20 27 views
1

文件我有它位於/libs文件夾在我的Android項目的JAR。該罐子有一些xml文件閱讀由.apk

我想要做的是閱讀從罐子xml文件在我的Android應用程序。

我曾嘗試使用下面的方法嘗試:

 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

你爲什麼不使用資產!?只需將你的xml放入資產 –

+0

因爲我的圖書館已經有了這些文件。爲什麼我應該手動將它們放在我的android應用程序中? – ziLk

回答

-1

我試過用幾種方法從android項目中的jar中讀取文件。

最後,我可以讀取使用此文件:

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

下面的代碼做任何工作。

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