package downfile;
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.io.file.*;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2009</p>
*
* <p>Company: </p>
*
* @author new soul
* @version 1.0
*/
public class Load extends Thread {
private String url;//网络文件的地址
private String path;//本地保存路径
private long loadsize=0;//下载文件的大小
private long size=0;//已下载的文件大小
private MIDlet midlet;
/**
* 下载线程
* @param urlstr String 网络文件地址
* @param pathstr String 本地存储路径
* @param mid MIDlet 当前显示主类
* 手机地址为 file:///E:/ 电脑模拟器地址 file://localhost/root1/
*/
public Load(String urlstr,String pathstr,MIDlet mid) {
this.url=urlstr;
this.path=pathstr;
this.midlet=mid;
Thread thread=new Thread(this);
thread.start();
}
public void run() {
try {
LoadFile(url, path);
Alert alert=new Alert("下载提示","下载已完成!",null,AlertType.ALARM);
alert.setTimeout(3000);
Display.getDisplay(midlet).setCurrent(alert);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 文件的断点下载
* @param urladress String 网络文件的地址
* @param pathstr String 文件存储的本地地址
*/
public void LoadFile(String urladress, String pathstr) {
HttpConnection conn = null;
FileConnection fc = null;
InputStream is = null;
OutputStream os = null;
//截取文件名
String[] urlstr = Tool.Split(urladress, "/");
String filename = urlstr[urlstr.length - 1].toString();
try {
conn = (HttpConnection) Connector.open(url.trim());
conn.setRequestMethod(HttpConnection.POST);
//手机地址为 file:///E:/ 电脑地址file://localhost/root1/
fc = (FileConnection) Connector.open(pathstr + filename,Connector.READ_WRITE);
if (fc.exists())
this.size = fc.fileSize();
conn.setRequestProperty("RANGE", "bytes=" + size + "-"); //断点续传
setLoadsize(conn.getLength());//下载文件长度
is = conn.openInputStream();
int ch;
byte[] b = new byte[1024];
if (!fc.exists()) {//文件不存在
fc.create();
os = fc.openOutputStream();
}
else {//文件已经存在
fc.truncate(size);
os = fc.openOutputStream(size);
}
while ((ch = is.read(b)) != -1) {
os.write(b, 0, ch);
}
fc.close();
os.close();
is.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void setLoadsize(long loadsize) {
this.loadsize = loadsize;
}
public long getLoadsize() {
return loadsize;
}
public long getSize() {
return size;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/laigb/archive/2009/03/15/3992367.aspx
分享到:
相关推荐
J2ME实现的断点续传,解决下载文件问题
这是解决j2me不能调试的问题。在做移动开发时所遇到的问题,根据此文件就可以解决问题!
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...
J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...
J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 ...