我有一个整个文件夹结构,我想从我的资产文件夹中复制。但是,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。我认为目前不可能使用普通的文件操作迭代资产中的文件夹。
答案 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){}