多平台统一管理软件接口,如何实现多平台统一管理软件接口
200
2023-07-31
java实现适用于安卓的文件下载线程类
代码非常简单实用,这里就不多废话了,直接奉上源码
package android.mooc.tools;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.RandomAccessFile;
import java.net.URL;
import java.net.URLConnection;
import android.util.Log;
public class FileDownloadThread extends Thread {
private static final int BUFFER_SIZE = 1024;
private URL url;
private File file;
private int startPosition;
private int endPosition;
private int curPosition;
// 用于标识当前线程是否下载完成
private boolean finished = false;
private int downloadSize;
private boolean state;
boolean destory;
public boolean isDestory() {
return destory;
}
public void setDestory(boolean destory) {
this.destory = destory;
}
public FileDownloadThread(URL url, File file, int startPosition, int endPosition) {
this.url = url;
this.file = file;
this.startPosition = startPosition;
this.curPosition = startPosition;
this.endPosition = endPosition;
this.downloadSize = 0;
}
@Override
public void run() {
destory = false;
state = true;
BufferedInputStream bis = null;
RandomAccessFile fos = null;
byte[] buf = new byte[BUFFER_SIZE];
URLConnection con = null;
try {
con = url.openConnection();
con.setAllowUserInteraction(true);
// 设置当前线程下载的起点,终点
con.setRequestProperty("Range", "bytes=" + startPosition + "-" + endPosition);
con.setRequestProperty("accept", "*/*");
con.setRequestProperty("connection", "Keep-Alive");
con.setRequestProperty("Ahttp://ccept-Language", "zh-CN");
con.setRequestProperty("Charset", "UTF-8");
con.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322;"
+ " .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)");
// 使用java中的RandomAccessFile 对文件进行随机读写操作
fos = new RandomAccessFile(file, "rw");
// 设置开始写文件的位置
fos.seek(startPosition);
bis = new BufferedInputStream(con.getInputStream());
// 开始循环以流的形式读写文件
while ((curPosition < endPosition) && (!destory)) {
while (state == false) {
sleep(2000);
}
int len = bis.read(buf, 0, BUFFER_SIZE);
if (len != -1) {
fos.write(buf, 0, len);
curPosition = curPosition + len;
if (curPosition > endPosition) {
downloadSize += len - (curPosition - endPosition);
} else {
downloadSize += len;
}
}
Log.i("333", "run" + " len=" + len);
}
// 下载完成设为true
this.finished = true;
bis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean isState() {
return state;
}
public void setState(boolean state) {
this.state = state;
}
public boolean isFinished() {
return finished;
}
public int getDownloadSize() {
return downloadSize;
}
public void setDownloadSize(int downloadSize) {
this.downloadSize = downloadSize;
}
}
以上所述就是本文的全部内容了,希望大家能够喜欢。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~