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

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

问题描述:

我有我想从我的资产文件夹拷贝整个文件夹结构。但是,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

难道你的文件夹移动到你的/原始文件夹?然后,你可以使用:

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

使用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

  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