首选存储sd卡下载的文件压缩包怎么下载

4461人阅读
cocos2d-x(6)
& &cocos2d-x版本&2.0.4
& &cocos2d-x做android游戏在线更新资源。
& &费话不多说,直接上代码:
& &下载和解压是用android端java实现:
* 100 没有sd卡
下载过程中出错
解压过程中出错
删除过程中出错
public static int download()
//检查sd卡
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
return 100;
//下载保存
saveToFile(&http://192.168.0.14/data/Data.zip&, Environment.getExternalStorageDirectory()+&/data.zip&);
catch (IOException e)
e.printStackTrace();
File zipFile = new File(Environment.getExternalStorageDirectory()+&/data.zip&);
upZipFile(zipFile,Environment.getExternalStorageDirectory()+&/xydata/data/&);
catch (ZipException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
deleteFile(zipFile);
catch(Exception e)
e.printStackTrace();
private static int BUFFER_SIZE = 8096; //缓冲区大小
* 将HTTP资源另存为文件
* @param destUrl String
* @param fileName String
* @throws Exception
public static void saveToFile(String destUrl, String fileName) throws IOException
FileOutputStream fos =
BufferedInputStream bis =
HttpURLConnection httpUrl =
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;
// 建立链接
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
// 连接指定的资源
httpUrl.connect();
// 获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
// 建立文件
fos = new FileOutputStream(fileName);
System.out.println(&正在获取链接[& + destUrl + &]的内容...\n将其保存为文件[& + fileName + &]&);
// 保存文件
while ((size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
* 解压缩一个文件
* @param zipFile 要解压的压缩文件
* @param folderPath 解压缩的目标目录
* @throws IOException 当解压缩过程出错时抛出
public static void upZipFile(File zipFile, String folderPath) throws ZipException, IOException
File desDir = new File(folderPath);
if (!desDir.exists())
desDir.mkdirs();
ZipFile zf = new ZipFile(zipFile);
for (Enumeration&?& entries = zf.entries(); entries.hasMoreElements();)
ZipEntry entry = ((ZipEntry) entries.nextElement());
InputStream in = zf.getInputStream(entry);
String str = folderPath + File.separator + entry.getName();
str = new String(str.getBytes(&8859_1&), &GB2312&);
File desFile = new File(str);
if (!desFile.exists())
File fileParentDir = desFile.getParentFile();
if (!fileParentDir.exists())
fileParentDir.mkdirs();
desFile.createNewFile();
OutputStream out = new FileOutputStream(desFile);
byte buffer[] = new byte[1024];
while ((realLength = in.read(buffer)) & 0)
out.write(buffer, 0, realLength);
in.close();
out.close();
//将SD卡文件删除
public static void deleteFile(File file)
if (file.exists())
if (file.isFile())
file.delete();
// 如果它是一个目录
else if (file.isDirectory())
// 声明目录下所有的文件 files[];
File files[] = file.listFiles();
for (int i = 0; i & files. i++)
{ // 遍历目录下所有的文件
deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
file.delete();
& &流程就是先把zip包下载到sd卡中,再解压到指定目录,解压完成后zip就没了删之。
& & 在c++里检测版本,在需要更新时通过jni调用download()方法,这里的方法都写成static的,纯是为了jni调用时省点事。
& & 要是不会用通过jni在c++和java之间相互调用可以度娘、google,也可以参考cocos2dx\platform\android\jni目录下Java开头的几个类和samples\HelloCpp\proj.android\src\org\cocos2dx\lib里边的java文件结合着看看就明白了。
还要在AndroidManifest.xml中加sd卡中写文件和访问网络的权限如下:
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&/&
&uses-permission android:name=&android.permission.INTERNET&/&
现在sd卡的资源有了,下面解决调用问题,方法有2也直接上代码:
char* buffer = (char *)CCFileUtils::sharedFileUtils()-&getFileData(&/mnt/sdcard/to3/icon.png&, &rb&, &filesize);
if(image.initWithImageData((void*)buffer, filesize, CCImage::kFmtPng))
CCTexture2D *texture = new CCTexture2D();
texture-&initWithImage(&image);
if( texture )
CCSprite *sprite = CCSprite::createWithTexture(texture);
if (sprite)
CCLog(&111sprite != null&);
this-&addChild(sprite);
sprite-&setPosition(ccp(200, 100));
CCLog(&111sprite == null&);
bool flag = image.initWithImageFile(&/mnt/sdcard/to3/icon.png&, CCImage::kFmtPng);
CCTexture2D *texture2D = new CCTexture2D();
texture2D-&initWithImage(&image);
CCSprite *sprite = CCSprite::createWithTexture(texture2D);
if (sprite)
CCLog(&222sprite != null&);
this-&addChild(sprite);
sprite-&setPosition(ccp(100, 100));
CCLog(&222sprite == null&);
方法1不只可以读图片,其他的 xml之类的文件也可以读,方法2只是读图片的。
/mnt/sdcard是sd卡的根目录,这里用于测试是写死的,由于手机厂商不同,这个路径也会不同,要通过jni(又是jni)获取Environment.getExternalStorageDirectory()
附图一张,图中的两小人就是上面的两个方法加进去的。
就到这里吧
有什么不对的地方请指正,谢谢!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9534次
排名:千里之外
(1)(1)(3)(1)(1)后使用快捷导航没有帐号?
只需一步,快速开始
查看: 1025|回复: 9
在线时间1 小时经验值212 最后登录注册时间帖子阅读权限50UID3055670
大学专科, 积分 212, 距离下一级还需 188 积分
TA的每日心情无聊 22:55签到天数: 22 天[LV.4]偶尔看看III
G币68 最后登录注册时间
马上注册,结交更多机友,下载更多应用,让你轻松玩转手机。
已有帐号?   下载游戏和软件,请【】进入机锋市场!
请问一下朋友,我下的zip卡刷包是复制到手机内存还是SD卡内存?我用360手机助手上传文件,不管是上传到手机内存还是SD卡内存都复制不进去,请问你们是怎么复制进去的。我每次复制就这样。我还尝试了直接在我的电脑里直接复制到下面的便携设备HTCONE里,但是还是复制不进去
本帖子中包含更多资源
才可以下载或查看,没有帐号?
在线时间144 小时经验值1421 最后登录注册时间帖子阅读权限80UID174765
研究生, 积分 1421, 距离下一级还需 279 积分
TA的每日心情开心 13:21签到天数: 2 天[LV.1]初来乍到
G币98 最后登录注册时间
不要用这些乱七八糟的助手,,,,,,,我的电脑不是能看到HTC ONE么,直接双击进去,然后把文件复制进去就是了。。。。。。如果打不开,请先解锁手机屏幕。。。。。。
M7_UL S-OFF CID: HTC_044
Recovery: TWRP 2.8.4.0
Firmware: Stock
Kernal: EX-17.0
ROM: Stock 6.13.707.7
在线时间1 小时经验值212 最后登录注册时间帖子阅读权限50UID3055670
大学专科, 积分 212, 距离下一级还需 188 积分
TA的每日心情无聊 22:55签到天数: 22 天[LV.4]偶尔看看III
G币68 最后登录注册时间
寻Q人 发表于
不要用这些乱七八糟的助手,,,,,,,我的电脑不是能看到HTC ONE么,直接双击进去,然后把文件复制进去 ...
那请问是复制到手机内存还是内置SD卡?刷机的时候要双清WIP吗?我之前卡刷,我把zip复制到手机内存里,双清之后进去就没卡刷包了。没刷过机,所以不太清楚,请朋友指教一下
在线时间144 小时经验值1421 最后登录注册时间帖子阅读权限80UID174765
研究生, 积分 1421, 距离下一级还需 279 积分
TA的每日心情开心 13:21签到天数: 2 天[LV.1]初来乍到
G币98 最后登录注册时间
緈諨尐侽秂 发表于
那请问是复制到手机内存还是内置SD卡?刷机的时候要双清WIP吗?我之前卡刷,我把zip复制到手机内存里,双 ...
没搞懂你的逻辑,如果是单卡版,那就只有一个,手机内存就是内置sd卡。。。。你要是双卡版本还插了sd卡的话我就不知道了
你双清不要清理sd卡。。。。如果你没清理sd(也就是你照片什么的还在的话),那就是估计你是没找到rom的位置而不是没有rom了。。。。那些流氓助手软件可能把你的zio文件复制都某个特定的
M7_UL S-OFF CID: HTC_044
Recovery: TWRP 2.8.4.0
Firmware: Stock
Kernal: EX-17.0
ROM: Stock 6.13.707.7
在线时间1 小时经验值212 最后登录注册时间帖子阅读权限50UID3055670
大学专科, 积分 212, 距离下一级还需 188 积分
TA的每日心情无聊 22:55签到天数: 22 天[LV.4]偶尔看看III
G币68 最后登录注册时间
寻Q人 发表于
没搞懂你的逻辑,如果是单卡版,那就只有一个,手机内存就是内置sd卡。。。。你要是双卡版本还插了sd卡的 ...
谢谢朋友,幸亏你提醒,我直接把360手机助手卸载掉,立马就能从我的电脑移动盘里复制进去。万恶的360啊~~~~~
在线时间0 小时经验值378 最后登录注册时间帖子阅读权限50UID
大学专科, 积分 378, 距离下一级还需 22 积分
该用户从未签到
G币115 最后登录注册时间
继续顶上去
在线时间0 小时经验值1729 最后登录注册时间帖子阅读权限1UID
头像被屏蔽
该用户从未签到
G币6 最后登录注册时间
提示: 作者被禁止或删除 内容自动屏蔽
在线时间1 小时经验值212 最后登录注册时间帖子阅读权限50UID3055670
大学专科, 积分 212, 距离下一级还需 188 积分
TA的每日心情无聊 22:55签到天数: 22 天[LV.4]偶尔看看III
G币68 最后登录注册时间
寻Q人 发表于
没搞懂你的逻辑,如果是单卡版,那就只有一个,手机内存就是内置sd卡。。。。你要是双卡版本还插了sd卡的 ...
朋友有没有遇到过打电话经常断线?我联通卡,用的港版,经常打电话通话中突然就断了。我看有帖子说拨*#*#4636#*#*,进入“手机信息”,将“首选网络类型”设为“GSM auto(prl)手机信号就好了。我也试了下,就算2G是满信号,有时还是会断线?朋友有这情况吗
在线时间144 小时经验值1421 最后登录注册时间帖子阅读权限80UID174765
研究生, 积分 1421, 距离下一级还需 279 积分
TA的每日心情开心 13:21签到天数: 2 天[LV.1]初来乍到
G币98 最后登录注册时间
緈諨尐侽秂 发表于
朋友有没有遇到过打电话经常断线?我联通卡,用的港版,经常打电话通话中突然就断了。我看有帖子说拨*#*# ...
信号满格短线没试过,不过试过几次打电话突然断了, 然后一看,飞行模式了。。。。不知道是不是我脸太大还是什么原因,经常飞行模式挂电话
M7_UL S-OFF CID: HTC_044
Recovery: TWRP 2.8.4.0
Firmware: Stock
Kernal: EX-17.0
ROM: Stock 6.13.707.7
在线时间1 小时经验值212 最后登录注册时间帖子阅读权限50UID3055670
大学专科, 积分 212, 距离下一级还需 188 积分
TA的每日心情无聊 22:55签到天数: 22 天[LV.4]偶尔看看III
G币68 最后登录注册时间
寻Q人 发表于
信号满格短线没试过,不过试过几次打电话突然断了, 然后一看,飞行模式了。。。。不知道是不是我脸太大 ...
我昨天写了个帖子,是我测试手机断线的,朋友看看你遇到我测试的这种情况没有
Powered bySD卡文件删除后怎么才能恢复_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
SD卡文件删除后怎么才能恢复
上传于||文档简介
&&S​D​卡​,​又​叫​安​全​数​码​卡​,​是​一​种​基​于​半​导​体​快​闪​记​忆​器​的​新​一​代​记​忆​设​备​,​它​被​广​广​泛​地​于​便​携​式​装​置​上​使​用​,​例​如​数​码​相​机​、​个​人​数​码​助​理​(​外​语​缩​写​P​D​A​)​和​多​媒​体​播​放​器​等​。​S​d​卡​被​越​来​越​多​的​使​用​于​存​储​信​息​中​。​信​息​越​多​,​数​据​的​安​全​风​险​越​高​。
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢如果你喜欢本文件,可通过下面的方式分享给好友:
轻松使用QQ、新浪微博等账号登录并
下载文件:
输入右边图片验证码后,立即开始下载,验证码与下载内容无关
输入正确,开始下载...
今天不想再输入这么2的验证码了?没问题!}

我要回帖

更多关于 sd卡无法删除存储文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信