本来递归拷贝文件夹是很容易的, 但是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博客客户端

更多相关文章

  1. C语言函数的递归(上)
  2. Android中获取文件路径的方法总结及对照
  3. Android(安卓)命令行打包和签名
  4. Android(安卓)Https 双向认证
  5. Tiny4412_android5.0.2编译
  6. 转载:android 源码 打包成apk的实现
  7. Android(安卓)ANR 分析流程
  8. Android(安卓)7.1.1 去除Launcher3的抽屉(2018/12/5)
  9. 更新进度条

随机推荐

  1. android 控制移动网络开关
  2. Android -- 倒计时Button的实现
  3. Android 发布版本不输出Log
  4. android 动态布局setLayoutParams方法设
  5. android加载本地图片
  6. 我的Android计算器
  7. xproto xextproto xtrans xcb >= 1.1.92
  8. Android中的那些sql语句
  9. 复习android SQLiteOpenHelper
  10. Android关闭输入法