把 assets 下的文件复制替换 sdcard 的文件
来源:互联网 发布:哪个mac地址 win10 编辑:程序博客网 时间:2024/06/07 19:55
参考链接:
http://blog.csdn.net/qq_17326933/article/details/48450487
注意点:
1、比如文件 text.txt 不应直接放在 assets 下,至少有个路劲:比如 assets/copyfile/text.txt。尝试没有添加路劲,使用下面的帮助类会失败
2、楼主感觉很久也没跟新了,秒速得有些东西也是有问题的。我帮楼主继续下去吧。
工具类代码:
/** * @author admin * 复制assets下面的protectedfile下面的 issmvw.cfg 文件到 sdcardPath 中 */public class AssetsCopyToSDcard { Context context; public AssetsCopyToSDcard(Context context) { super(); this.context = context; } /** * @param context * @param assetpath asset下的路径 * @param SDpath SDpath下保存路径 */ public void AssetToSD(String assetpath, String SDpath) { AssetManager asset = context.getAssets(); // 循环的读取asset下的文件,并且写入到SD卡 String[] filenames = null; FileOutputStream out = null; InputStream in = null; try { filenames = asset.list(assetpath); if (filenames.length > 0) {// 说明是目录 // 创建目录 getDirectory(assetpath); for (String fileName : filenames) { AssetToSD(assetpath + "/" + fileName, SDpath + "/" + fileName); } } else { // 说明是文件,直接复制到SD卡 File SDFlie = new File(SDpath); String path = assetpath.substring(0, assetpath.lastIndexOf("/")); getDirectory(path); if (!SDFlie.exists()) { SDFlie.createNewFile(); } // 将内容写入到文件中 in = asset.open(assetpath); out = new FileOutputStream(SDFlie); byte[] buffer = new byte[1024]; int byteCount = 0; while ((byteCount = in.read(buffer)) != -1) { out.write(buffer, 0, byteCount); } out.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (out != null) { out.close(); out = null; } if (in != null) { in.close(); in = null; } /** * 关闭报错,java.lang.RuntimeException: Unable to start activity * ComponentInfo * {com.example.wealth/com.example.wealth.UI.main}: * java.lang.RuntimeException: Assetmanager has been closed */ } catch (IOException e) { e.printStackTrace(); } } } // 分级建立文件夹 public void getDirectory(String path) { // 对SDpath进行处理,分层级建立文件夹 String[] s = path.split("/"); String str = Environment.getExternalStorageDirectory().toString(); for (int i = 0; i < s.length; i++) { str = str + "/" + s[i]; File file = new File(str); if (!file.exists()) { file.mkdir(); } } }}
使用方法
String assetFilePath = "protectedfile/test.txt";String sdcardFileResPath = Environment.getExternalStorageDirectory().toString() + "/test/test.txt";AssetsCopyToSDcard assetsCopyTOSDcard = new AssetsCopyToSDcard(Context);assetsCopyTOSDcard.AssetToSD(assetFilePath, sdcardFileResPath);
注:其中 Context 传当前类的上下文,不懂上下文的请百度查阅。
总结
好东西,真的有必要分享出来给大家工程师程序猿,但是尽量应该验证好。节省大家的时间,同时考虑初学者,有些不太明白的,应该说明。让初学者更加容易明白,上手使用这些。
阅读全文
0 0
- 把 assets 下的文件复制替换 sdcard 的文件
- 把assets下的指定文件拷贝到sdcard上
- Android:复制Assets下所有的文件(遍历每一个文件夹),并存入sdcard里面
- Android复制Assets目录下的文件到指定目录
- Android 中 Assets目录下 文件或文件夹的复制
- android:assets下的文件复制到SD卡
- Android复制assets目录下的文件到另一个目录
- 把assets目录下的db文件拷贝进来
- 把"Assets/Resources/mats" 和“"Assets/Resources"下的图片文件全部编译成assetBundle
- sqlite db文件的复制至sdcard
- 读取assets下的文件
- 将assets文件中内容复制到SDCard中
- 解压assets下的zip包并复制相应的文件
- Android复制Assets目录下的文件到/data/data目录
- 将android项目assets文件夹下的文件复制到SD卡中
- android开发将assets路径下的文件复制到特定路径
- [原创]安卓复制assets目录下的文件及文件夹(1)
- 读取Assets目录下的文件
- 一起学Java_Eclipse开发工具介绍及equals、toString方法的重写equals
- 工作中的犯过的错误总结
- 折线等分算法
- 第四范式陈雨强:万字深析工业界机器学习最新黑科技 By 机器之心2017年7月25日 16:38 近日,全球最顶级大数据会议 Strata Data Conference 在京召开。Strata 大
- Android中ViewPager常用功能2----广告栏自动滑动和手动滑动
- 把 assets 下的文件复制替换 sdcard 的文件
- 变色龙哈希函数 Chameleon Hash 可变型区块链
- JSP 监听器Listener
- Bash监控Logstash写入HDFS性能脚本
- 智慧城市运维中心——智慧纽约
- 指定lambda返回类型
- 老生(老司机)常谈的Android Studio 实用小技巧
- 17/7/26 获取 浏览器网页窗口可视区域大小等
- JAVA中的transient学习