您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
安卓实现将raw目录中文件写入到sdcard中及动态加载raw资源
发布时间:2021-07-23 16:47:46编辑:雪饮阅读()
为了向某c语言项目接口传递一个字体文件,但是这个文件用户本地文件目录中就不一定有,就算有,你也不知道具体路径。
这里实现的方式是在res/raw目录下放置一些字体文件,关于raw下面放置的字体文件需要注意文件名称不能包含大写字母,文件名称只支持[0-9],[a-z]以及下划线。
然后就可以封装一个用于从raw目录中将指定文件写入到sdcard中的方法
/**
* 复制res/raw中的文件到指定目录
* @param context 上下文
* @param id 资源ID
* @param fileName 文件名
* @param storagePath 目标文件夹的路径
*/
public static void copyFilesFromRaw(Context context, int id, String fileName,String storagePath){
InputStream inputStream=context.getResources().openRawResource(id);
File file = new File(storagePath);
if (!file.exists()) {//如果文件夹不存在,则创建新的文件夹
file.mkdirs();
}
readInputStream(storagePath + File.separator + fileName, inputStream);
}
* 复制res/raw中的文件到指定目录
* @param context 上下文
* @param id 资源ID
* @param fileName 文件名
* @param storagePath 目标文件夹的路径
*/
public static void copyFilesFromRaw(Context context, int id, String fileName,String storagePath){
InputStream inputStream=context.getResources().openRawResource(id);
File file = new File(storagePath);
if (!file.exists()) {//如果文件夹不存在,则创建新的文件夹
file.mkdirs();
}
readInputStream(storagePath + File.separator + fileName, inputStream);
}
这里资源id可以如:R.raw.fang_heng_hua_li
如果想要动态获取raw中每个资源id,可以如:
Resources res = getResources();
int identifier = res.getIdentifier(fontCode,"raw",getPackageName());
另外需要注意的是,对于raw目录下是不可以继续建立子目录的,比如我想raw目录中的文件可以有分类,例如我目前raw目录中只放字体,那么就建立raw目录下以fonts目录,实际上这样是玩不通的。
关键字词:安卓,raw,sdcard,raw,动态