很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏。

有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中。

这样就不需要,在安装APK之后,去下载资源。(这样APK的大小就会大一些)

于是在网上就开始找对应的直接访问随apk一起安装到手机中的资源。比如在assets目录下放置了一个“test.zip”的资源。当apk安装之后,可能我就需要访问这个"test.zip"资源文件。(可能我会去解压到某处)

在网上找了很长时间,说什么在assets下的资源怎么怎么不能超过1M、或者要分成多个不超过1M的小文件,然后用的时候在拼成一个大文件、说什么要用到什么数据库。总之说的,感觉没有一个有用的。

于是自己就实现了一个从assets下拷贝资源到sd卡中的一个功能。这里不限制非得拷贝到sd卡中。

之所以要拷贝出来,是因为在assets内的资源随apk安装之后,不好访问。所以想拷贝到一个容易访问的地方。比如是一个assets下的是一个zip文件,为需要在安装之后进行解压。而解压的时候我又想使用 ant.jar (支持编码) 。于是我先将zip资源拷贝到一个地方,然后在进行解压。

private void copyBigDataToSD(String strOutFileName) throws IOException
{
InputStream myInput;
OutputStream myOutput = new FileOutputStream(strOutFileName);
myInput = this.getAssets().open("yphone.zip");
byte[] buffer = new byte[1024];
int length = myInput.read(buffer);
while(length > 0)
{
myOutput.write(buffer, 0, length);
length = myInput.read(buffer);
} myOutput.flush();
myInput.close();
myOutput.close();
}

备注:参数为要拷贝的目的地例如“/mnt/sdcard/test/Out.zip”;

此处“myInput = cGameActivity.getAssets().open("yphone.zip"); ”open 的是你放在assets下的资源的名称。本例放的是一个叫"yphone.zip"的文件;

在进行测试的时候发现在资源文件很大时,例如200M左右,可能会报错。

但可以保证的是100M一下的没问题。

转载请注明出处:http://www.cnblogs.com/yydcdut/p/3744873.html

参考:http://www.cnblogs.com/wainiwann/p/3274386.html

Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)的更多相关文章

  1. android中拷贝assets下的资源文件到SD卡中(可以超过1M)

    很多手机游戏,在安装APK之后都得需要下载相应的资源包,然后才能进入游戏. 有这样一个需求:就是游戏中需要的资源包打在APK内,随apk一起进行安装到手机中. 这样就不需要,在安装APK之后,去下载资 ...

  2. cygwin下烧写文件到sd卡中

    在cygwin下将firmware_sdcard.bin写入到sd卡中(cygwin需要以管理员身份启动) 1查看sd分区情况 cat /proc/partitions  (为了找到sd卡的标记) 2 ...

  3. Android 读取Assets下的资源文件

    做Android开发近半年了,东西越学越多,硬盘容量越来越小.很多东西找起来也不方便,为此,我打算从今天起把工作中学到的东西整理起来,写成日记.也希望与广大网友分享我的经验.一同进步.今天主要介绍文件 ...

  4. android保存文件到SD卡中

    想把文件保存到SD卡中,一定要知道SD卡的路径,有人说可以用File explore来查看,这种方法不太好,因为随着android版本的升级,SD卡的路径可能会发生改变.在1.6的时候SD的路径是/s ...

  5. Android 将文件保存到SD卡中

    ①写文件到sd卡中需要获得权限,在AndroidManifest.xml中添加如下权限: <uses-permission android:name="android.permissi ...

  6. 从网络上下载文件到sd卡上

    String SDPATH = Environment.getExternalStorageDirectory() + "/"; String path = SDPATH + &q ...

  7. android开发,assets下面的资源文件不会变化/改动

    我再调试asserts下面的资源文件,发现我改动assets下面的文件内容,在真机上测试的时候还是最原先的内容,没有变,后来,卸载,重装就ok了. 原因: assets下面的资源文件,若覆盖重装,则里 ...

  8. unity 自动删除未引用的Assets下的资源

    随着时间的堆积,项目中Assets文件夹下的资源会变得越来越繁杂,有些贴图.材质啥的可能压根没有使用过,但是又不敢轻易去删除. 这里分享两个插件,用于管理这些资源. 一.ResourceChecker ...

  9. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

随机推荐

  1. Kubernetes网络模型概念

    Kubernetes网络模型 Kubernetes网络模型设计的一个基础原则是:每个Pod都拥有一个独立的IP地址,而且假定所有Pod都在一个可以直接连通的.扁平的网络空间中.所以不管它们是否运行在同 ...

  2. 【CF540D】 D. Bad Luck Island (概率DP)

    D. Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  3. CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题

    题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹 ...

  4. php模块组成

    php总共有三个模块:内核.ZEND引擎.扩展. 内核是用来处理请求.文件流.错误处理等操作的: ZEND引擎是将源文件转换成机器语言,然后在虚拟机上运行: 扩展层是一组函数.类库和流,php使用它们 ...

  5. cocos2dx 3.0 中文 iconv 转换函数

    //#include <string> #pragma once #include "cocos2d.h"; #include "iconv\include\ ...

  6. HOWTO: Get the command line of a process(转)

    How would you get the command line of a process? Some people have suggested that you use remote thre ...

  7. Hex-Rays Decompiler

    https://www.hex-rays.com/products/decompiler/ We are pleased to present our flagship product, the He ...

  8. erlang 中文社区 下载

    http://www.cnerlang.com/download/     erlang 下载 http://www.blogjava.net/killme2008/archive/2007/06/1 ...

  9. MFC绘制直方图和饼图

    转载原文: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNorma ...

  10. merge into优化sql(转)

    使用Merge INTO优化SQL,性能提升巨大 分类: Oracle 2017-04-13 10:55:07   说说背景:开发有个需求,需要对新加的一个字段根据特定的业务逻辑更新数据.TPS_TR ...