android中拷贝assets下的资源文件到SD卡中(可以超过1M)
2013-09-04 16:51
405 查看
很多手机游戏,在安装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一下的没问题。
最后,此函数运行需要加权限!
有这样一个需求:就是游戏中需要的资源包打在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一下的没问题。
最后,此函数运行需要加权限!
相关文章推荐
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- Android -- 拷贝assets下的资源文件到SD卡中(可以超过1M)
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- android中拷贝assets下的资源文件到SD卡中(可以超过1M)
- Android 读取Assets资源文件或目录,并拷贝到其他目录下
- android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件
- Android 将assets中的单个文件拷贝到sd卡中
- android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件
- Android 将assets中的文件拷贝到本地SD卡使用
- android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M的文件
- Android从raw、assets、SD卡中获取资源文件内容
- android raw读取超过1M文件的方法
- Android资源文件分类 res目录 assets目录
- android 将Assets中的文件拷贝到sdcard上
- Android资源文件目录assets和raw
- Android apk安装过程及Java、JNI读取安装包内assets资源文件的两种方法(附源码实例)
- android中加载assets中的资源文件
- android raw读取超过1M文件…
- Android获取SD卡上的APK文件,并且判断是否安装过、是否可以更新到新版本的工具类
- Android中assets目录和raw目录的区别及其中properties资源文件的读取