2013-07-16 80 views
0

在我的Android應用我已經打包在需要複製到的SD卡的/ assets文件夾中的文件。當我列出的資產文件夾的內容到String[]我得到「圖像」,「聲音」,「WebKit的」和「kioskmode」但不是我的文件手動添加到資產的文件夾。爲什麼AssetManager list()不顯示我的資產文件夾?

我的代碼是在這裏:

private void copyAsset() { 
    AssetManager am = getApplicationContext().getAssets(); 
    String[] files = null; 
    try { 
     files = am.list(""); 
    } catch (IOException e) { 

    } 

    for (String filename : files) { 
     if (filename.equals("images") || filename.equals("kioskmode") || 
       filename.equals("sounds") || filename.equals("webkit")) { 
      Log.i(TAG, "Skipping folder " + filename); 
      continue; 
     } 
     InputStream in = null; 
     OutputStream out = null; 
     try { 
      in = am.open(filename); 
      File outFile = new File(Environment.getExternalStorageDirectory().getPath(), filename); 
      out = new FileOutputStream(outFile); 
      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e(TAG, "Error copying asset ", e); 
     } 
    } 
} 

是否有所作爲,這是第二類在我的應用程序,被稱爲使用Intent showHelper = new Intent(this, HelperManager.class); startActivity(showHelper);我的MainActivity?

我曾嘗試使用和不使用getApplicationContext()位的第二線(AssetManager am = ...),試圖將文件移動到/資產的子目錄,並試圖用files = am.list("")前緣和後斜線。如果我使用一個子文件夾中的文件數組爲空當代碼運行(在files = am.list("");行設置斷點,並檢查它在運行時 奇怪的是,它的工作一次 - 當我第一次寫的代碼,但進一步測試,我刪除了手機上的/ SD卡文件夾中的文件,因爲即使文件仍處於資產文件夾它從來沒有工作過。 我使用過Android Studio,如果該事項。 感謝

+0

你有什麼東西嗎?資產文件夾裏面? – Blackbelt

+0

是的,我做@blackbelt如果我瀏覽到項目位置,我可以在Android Studio的項目佈局中以及在Windows資源管理器中看到它。也許我會嘗試刪除並重新添加文件(它是一個.apk btw)。 – Mark

+0

如果這些文件與apk版捆綁在一起,那你就很好。你瞭解'continue'關鍵字的含義嗎?你想要的「圖像」,「聲音」,「WebKit的」和「kioskmode內部SD卡寫入? – Blackbelt

回答

0

設法得到使用Load a simple text file in Android Studio的修復方案。它仍然放4個文件夾中的文件數組中,但我可以使用代碼跳過它們上面給出的,雖然我倒是應該檢查我想我做的不是文件,而不是4!

相關問題