Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 707|回复: 0

[实例教程]Android断点续传核心代码

[复制链接]

该用户从未签到

发表于 2011-10-22 14:01:19 | 显示全部楼层 |阅读模式
/**

* 断点续传

* @param url

*/  

private void duanDianXuChuan(final String url){  

try {  

Runnable r = new Runnable() {  

@Override  

public void run() {  

getRemoteFile(url);  

}  

};  

new Thread(r).start();  

} catch (Exception e) {  

e.printStackTrace();  

}  

}  

/**

* 下载远端文件

* @param urlString

*/  

private void getRemoteFile(String urlString){  

try{  

File file;  

if(mCurSize == 0){  

file = File.createTempFile(fileNa, fileEx);  

currentTempFilePath = file.getAbsolutePath();  

Log.e(“andy”,file.getName() + ” has exists.”);  

} else {  

file = new File(currentTempFilePath);  

FileInputStream fis = new FileInputStream(file);  

mCurSize = fis.available();  

Log.e(“andy”,file.getName() + ” has ” + mCurSize + ” bytes.”);  

}  

URL url = new URL(urlString);  

HttpURLConnection httpConnection = (HttpURLConnection) url  

.openConnection();  

httpConnection.setRequestProperty(“User-Agent”, “NetFox”);  

String sProperty = “bytes=” + mCurSize + “-”;  

httpConnection.setRequestProperty(“RANGE”, sProperty);  

InputStream is = httpConnection.getInputStream();  

Log.e(“andy”,”mTempFileName = ” + mTempFileName);  

/*将文件写入暂存盘*/  

FileOutputStream fos = new FileOutputStream(file, true);  

byte buf[] = new byte[512];  

do  

{  

int numread = is.read(buf);  

if (numread <= 0)  

{  

mHandler.sendEmptyMessageDelayed(this.DOWNLOAD_FINISH, 0);  

break;  

}  

mCurSize += numread;  

mHandler.sendEmptyMessageDelayed(this.UPDATE_DOWNLOAD_PROGRESS, 0);  

Log.e(“andy”,”current size = ” + mCurSize);  

fos.write(buf, 0, numread);  

}while (mContinue);  

/*打开文件进行安装*/  

if(mCurSize == mSize) {  

mCurSize = 0;  

openFile(file);  

}  

try  

{  

is.close();  

}  

catch (Exception ex)  

{  

Log.e(“andy”, “error: ” + ex.getMessage(), ex);  

}  

}catch(Exception e){  

e.printStackTrace();  

}  

}  

/**

* 获得文件长度

* @param urlString

* @return

*/  

public long getFileSize(String urlString) {  

int nFileLength = -1;  

try {  

URL url = new URL(urlString);  

HttpURLConnection httpConnection = (HttpURLConnection) url  

.openConnection();  

httpConnection.setRequestProperty(“User-Agent”, “NetFox”);  

int responseCode = httpConnection.getResponseCode();  

if (responseCode >= 400) {  

return -2; // -2 represent access is error  

}  

String sHeader;  

for (int i = 1;; i++) {  

sHeader = httpConnection.getHeaderFieldKey(i);  

if (sHeader != null) {  

if (sHeader.equals(“content-length”)) {  

nFileLength = Integer.parseInt(httpConnection  

.getHeaderField(sHeader));  

break;  

}  

} else  

break;  

}  

} catch (IOException e) {  

e.printStackTrace();  

} catch (Exception e) {  

e.printStackTrace();  

}  

return nFileLength;  

}  

/**

* 计算百分比

* @param p1

* @param p2

* @return

*/  

public static String percent(double p1, double p2) {  

String str;  

double p3 = p1 / p2;  

NumberFormat nf = NumberFormat.getPercentInstance();  

nf.setMinimumFractionDigits(2);  

str = nf.format(p3);  

Log.e(“andy”,”percentage = ” + str);  

return str;  

}  
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 14:01:32 | 显示全部楼层
楼主热帖
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-19 01:05 , Processed in 0.347431 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表