最近要将时钟的一些资源做成文件夹放到apk中,然后用户安装的时候复制到SD卡,由于时间比较紧急,就没有做压缩和解压缩的处理,但是问题来了,文件夹最好的放置位置是assest目录,但是通常我们使用的方法都是open(文件名);来获得流,也就是必须知道整个文件的路径,但是我想的是将整个文件夹复制,android并没有提供这样的方法,纠结了好久,终于发现了一个方法list(目录名)。list里的参数是assets目录下的一个目录名,list(目录名)这会得到该目录下的文件和子文件夹,但是我却得不到文件夹的路径,所以只好遍历其子文件夹再用open(文件名);来一个一个文件复制。
/** * 从assets目录下拷贝整个文件夹,不管是文件夹还是文件都能拷贝 * * @param context * 上下文 * @param rootDirFullPath * 文件目录,要拷贝的目录如assets目录下有一个SBClock文件夹:SBClock * @param targetDirFullPath * 目标文件夹位置如:/sdcrad/SBClock */ public static void copyFolderFromAssets(Context context, String rootDirFullPath, String targetDirFullPath) { Log.d(TAG, "copyFolderFromAssets " + "rootDirFullPath-" + rootDirFullPath + " targetDirFullPath-" + targetDirFullPath); try { String[] listFiles = context.getAssets().list(rootDirFullPath);// 遍历该目录下的文件和文件夹 for (String string : listFiles) {// 看起子目录是文件还是文件夹,这里只好用.做区分了 Log.d(TAG, "name-" + rootDirFullPath + "/" + string); if (isFileByName(string)) {// 文件 copyFileFromAssets(context, rootDirFullPath + "/" + string, targetDirFullPath + "/" + string); } else {// 文件夹 String childRootDirFullPath = rootDirFullPath + "/" + string; String childTargetDirFullPath = targetDirFullPath + "/" + string; new File(childTargetDirFullPath).mkdirs(); copyFolderFromAssets(context, childRootDirFullPath, childTargetDirFullPath); } } } catch (IOException e) { Log.d(TAG, "copyFolderFromAssets " + "IOException-" + e.getMessage()); Log.d(TAG, "copyFolderFromAssets " + "IOException-" + e.getLocalizedMessage()); e.printStackTrace(); } }
private static boolean isFileByName(String string) { if (string.contains(".")) { return true; } return false; }
/** * 从assets目录下拷贝文件 * * @param context * 上下文 * @param assetsFilePath * 文件的路径名如:SBClock/0001cuteowl/cuteowl_dot.png * @param targetFileFullPath * 目标文件路径如:/sdcard/SBClock/0001cuteowl/cuteowl_dot.png */ public static void copyFileFromAssets(Context context, String assetsFilePath, String targetFileFullPath) { Log.d(TAG, "copyFileFromAssets "); InputStream assestsFileImputStream; try { assestsFileImputStream = context.getAssets().open(assetsFilePath); FileHelper.copyFile(assestsFileImputStream, targetFileFullPath); } catch (IOException e) { Log.d(TAG, "copyFileFromAssets " + "IOException-" + e.getMessage()); e.printStackTrace(); } }
复制过程的log:
相关推荐
本demo实现了程序启动时,从assets文件夹中复制sqlite文件到程序的功能,里面带了一个sqlite查看工具,sqlite分割工具,详细说明文档。复制sqlite速度还算比较快。程序启动后,Log会输出结果,也可以使用adb shell...
2. 分别复制 [DragonBones 公共库源码](../DragonBones/src/)、[DragonBones Unity 库源码](./src/)、[第三方库源码](../3rdParty/) 中的所有文件夹和文件到项目的 Assets/Scripts 文件夹下。 3. 运行项目。 ## ...
- 树目录和文件列表一致性保持 更新相互通知 ####fix bug:(bug解决和程序优化) - 桌面重命名bug - 统一对话框部分bug - php notice 提示解决 - ajax返回非json 则展示服务错误的返回 - 所有入口都加入index...
通过安装Chirpy时,Jekyll只能从主题的gem读取_includes , _layout , _sass和assets文件夹中的文件以及_config.yml文件的一小部分(使用命令bundle info --path jekyll-theme-chirpy查找)。 要完全使用Chirpy的...
将Cubizer文件夹复制到Assets文件夹 将演示文件夹复制到资产文件夹 双击一个Demo / level1.unity文件 从标准资产导入字符包 要求: Unity 2017.2.0或更高版本。 特征 : 基于立方体的无限地形生成 Voxel文件导入 ...
将文件夹解压缩并复制到您的/ wp-content / themes /文件夹,或者通过上载.zip文件并激活Demo主题,通过wp-admin安装主题。 然后将CD(更改目录)放入主题文件夹并运行npm install 。 要求节点。 npm install 设置 ...
(1)在app目录下新建一个assets文件夹,将province_data.xml文件复制到该文件夹下,该XML文件里保存了全国的省市县的地址数据。 (2)使用SAX解析xml文件中的数据,并将数据填充到PickerView这个控件中。 —...
2.把下载好的字体文件夹里的iconfon.tff复制到src/assets/fonts里 3.在根目录中配置react-native.config.js文件 (以前是在rnpm配置,在package.json配置rnpm会有警告) module.exports = { assets: ['./src/assets/...