如何获取应用程序包中Android资源文件夹的路径

时间:2011-05-02 18:27:21

标签: android

我有一个整个文件夹结构,我想从我的资产文件夹中复制。但是,mContext.getAssets()。open()似乎只需要一个文件名,以便它可以返回一个InputStream,它只适用于复制单个文件。我需要的是从我的资产文件夹中的文件夹制作的文件,以便我可以递归所有文件和文件夹并将它们全部复制。

有人知道如何获取assets文件夹的路径,以便我可以创建一个File对象吗?

编辑:经过一些研究后,您似乎无法使用绝对路径访问assets /和raw /文件夹中的文件,以便能够创建File对象。它可能与应用程序包的加密有关。我希望有人能证明我错了!

最终编辑:我最终创建了一个字符串数组来保存额外的资产文件:

   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。我认为目前不可能使用普通的文件操作迭代资产中的文件夹。

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:3)

您可以将文件夹移动到/ raw文件夹吗?然后你可以使用:

 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");

答案 2 :(得分:-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){}