2011-05-02 124 views
20

我有我想從我的資產文件夾拷貝整個文件夾結構。但是,mContext.getAssets()。open()似乎只需要一個文件名,以便它可以返回一個只適合複製單個文件的InputStream。我需要的是從資產文件夾中的文件夾製作的文件,以便我可以遍歷所有文件和文件夾並將它們全部複製。如何獲取路徑到Android資源文件夾中的應用程序包

有誰知道如何獲得路徑資產文件夾,這樣我可以創建一個文件對象?

編輯:一些研究之後,似乎你不能訪問文件的資產/和使用絕對路徑的原始/文件夾能夠創建一個文件對象。它可能與應用程序包的加密有關。我希望有人能證明我錯了!

最後編輯:我結束了創建一個字符串數組來保存額外的資源文件:

private static final String[] DEFAULT_ALBUM_FILES = 
    {INTRO_TO_FLASHUM_DIR+"03 Never Can Say Goodbye.m4a", 
    INTRO_TO_FLASHUM_DIR+"11 Bossa Baroque.m4a", 
    INTRO_TO_FLASHUM_DIR+"intro fling.3gp"}; 

我再通過這個複製單獨使用mContext.getAssets(每個文件迭代)open()來。獲取InputStream。我不認爲目前可以使用普通的文件操作遍歷資產中的文件夾。

+0

你嘗試過什麼?請參閱:http://www.wiseandroid.com/post/2010/06/14/Android-Beginners-Intro-to-Resources-and-Assets.aspx – f20k 2011-05-02 18:55:01

+0

是的,這說明正是我所做的。 – cdavidyoung 2011-05-23 13:58:10

回答

3

難道你的文件夾移動到你的/原始文件夾?然後,你可以使用:

com.your.package:raw/yourFile 

像這樣:

int resourceId = context.getResources().getIdentifier("com.your.package:raw/somefile.txt"); 
File f = new File(context.getResources().openRawResource(resourceId)); 

和這裏的人與資產文件夾這樣做:

Android Assets with sub folders

InputStream is = getAssets().open("subfolder/somefile.txt"); 
+0

這看起來很有希望。我會試試看。我會回來的結果。謝謝! – cdavidyoung 2011-05-02 19:21:19

+0

原始文件夾也不顯示爲允許絕對路徑引用。由於至少我一直沒能弄明白...... – cdavidyoung 2011-05-02 20:01:54

+0

當然編輯答案 – Blundell 2011-05-02 21:08:04

-5

使用file:///android_asset訪問資產文件夾,然後你可以隨時給你的子文件夾。

AssetManager assetManager = null; // null ??? Get the AssetManager here. 
     AssetFileDescriptor assetFileDescriptor = null; 
     try{ 
      assetFileDescriptor = assetManager.openFd("file:///android_asset/yourfolder/file"); 
       FileDescriptor fd = assetFileDescriptor.getFileDescriptor(); 
     } catch (Exception e){} 
+0

恐怕我不明白如何使用「file:/// android_asset」。你可以把它放在「File file = new File(...);」的形式嗎? – cdavidyoung 2011-05-02 19:21:13

+0

獲取assetmanager,獲取assetfiledescriptor,從assetfiledescriptor獲取filedescriptor。 – yogsma 2011-05-02 20:16:52

+8

但是,您如何將FileDescriptor轉換爲文件? – cdavidyoung 2011-05-04 03:11:19

4
  AssetManager am = con.getAssets();//u have get assets path from this code 

     InputStream inputStream = null; 

     inputStream = am.open("file.xml"); 

String file_name="ur.xml" 

inputStream = am.open("foldername/"+ur); 
+0

完美答案謝謝:) +1 – 2016-04-30 06:04:39

相關問題