Android递归拷贝assets资源到指定目录
16lz
2021-01-24
本来递归拷贝文件夹是很容易的, 但是Android的assets提供的接口没有文件操作那么方便, 昨天写了一个方法来实现把assets资源拷贝到指定目录,
/** * copy assets to releaseDir with full path * * @author brian * @param context * @param assetsDir * @param releaseDir */ public static void releaseAssets(Context context, String assetsDir, String releaseDir) { if (TextUtils.isEmpty(releaseDir)) { return; } else if (releaseDir.endsWith("/")) { releaseDir = releaseDir.substring(0, releaseDir.length() - 1); } if (TextUtils.isEmpty(assetsDir) || assetsDir.equals("/")) { assetsDir = ""; } else if (assetsDir.endsWith("/")) { assetsDir = assetsDir.substring(0, assetsDir.length() - 1); } AssetManager assets = context.getAssets(); try { String[] fileNames = assets.list(assetsDir);//只能获取到文件(夹)名,所以还得判断是文件夹还是文件 if (fileNames.length > 0) {// is dir for (String name : fileNames) { if (!TextUtils.isEmpty(assetsDir)) { name = assetsDir + "/" + name;//补全assets资源路径 }// Log.i("", "brian name=" + name); String[] childNames = assets.list(name);//判断是文件还是文件夹 if (!TextUtils.isEmpty(name) && childNames.length > 0) { releaseAssets(context, name, releaseDir);//递归, 因为资源都是带着全路径, //所以不需要在递归是设置目标文件夹的路径 } else { InputStream is = assets.open(name); FileUtil.writeFile(releaseDir + "/" + name, is); } } } else {// is file InputStream is = assets.open(assetsDir); // 写入文件前, 需要提前级联创建好路径, 下面有代码贴出 FileUtil.writeFile(releaseDir + "/" + assetsDir, is); } } catch (Exception e) { e.printStackTrace(); } }级联创建folder
public static void checkFolderExists(String path) { File file = new File(path); if (file.exists() && !file.isDirectory() || !file.exists()) { file.mkdirs(); } }自己写的CSDN博客客户端
更多相关文章
- C语言函数的递归(上)
- Android中获取文件路径的方法总结及对照
- Android(安卓)命令行打包和签名
- Android(安卓)Https 双向认证
- Tiny4412_android5.0.2编译
- 转载:android 源码 打包成apk的实现
- Android(安卓)ANR 分析流程
- Android(安卓)7.1.1 去除Launcher3的抽屉(2018/12/5)
- 更新进度条