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(Java Micro Edition)平台上实现断点续传,可以为移动设备上的文件下载提供可靠的解决方案。本文将深入探讨J2ME中实现断点续传的关键技术点,并给出相关实现思路。 首先,理解断点续传的基本原理。断点续传...
4. **网络编程**:利用J2ME的Connection API进行HTTP请求,实现数据的下载和上传。 5. **数据存储**:通过Record Management System (RMS) 存储应用程序数据。 6. **事件处理**:理解并编写事件监听器,响应用户的...
将这两个文件发送到目标设备或应用商店,用户就可以下载和安装你的J2ME应用了。 ### 8. 进阶学习 随着技能的提升,你可以学习更复杂的J2ME特性,如网络通信、数据存储、多媒体支持等。同时,NetBeans还支持插件...
然后在“文件”>“新建项目”中选择J2ME相关的项目类型。 **3. 创建项目** 在NetBeans中创建J2ME项目,可以选择Mobile Application或Wireless Toolkit (WTK) Application。WTK是Sun Microsystems提供的J2ME开发...
J2ME开发需要Java Wireless Toolkit(WTK),它提供了模拟器和必要的库文件。前往Oracle官网(已不再提供直接下载,可能需要在互联网上搜索第三方下载源)下载适合你JDK版本的WTK,例如WTK 2.5.2。 3. **配置JRE**...
- 在项目中,找到`JAD`(Java Application Descriptor)文件,这是J2ME应用程序的元数据文件。 - 使用文本编辑器或Eclipse的属性编辑器,设置MIDlet的名称、版本、显示名称等关键属性。 5. **测试与调试** - 在...
5. **打包和部署工具**:WTK 提供了将应用程序打包成JAR和JAD文件的工具,这些文件可以被上传到服务器,然后由用户下载安装到他们的设备上。 6. **示例和文档**:WTK 2.2 还附带了丰富的示例代码和详细文档,帮助...
你可以设置断点,查看变量值,单步执行代码,甚至在模拟器中实时检查应用状态。确保在Eclipse中配置了正确的WTK模拟器,以便在开发过程中能够进行有效的测试。 此外,J2ME应用程序需要考虑的另一个关键因素是兼容性...
- **调试器**:允许开发者设置断点、查看变量值和调用栈,以便查找并修复错误。 5. **J2ME框架**: 开发J2ME应用时,通常会用到KVM(Java Virtual Machine for Embedded Devices)和CLDC(Connected Limited ...
同时,你也可以创建JAD文件,它包含了应用程序的元数据,如版本信息和下载位置。 5. **模拟器测试**:使用WTK提供的模拟器进行应用测试,检查功能和性能。模拟器可以模拟不同的设备特性,如屏幕尺寸、键盘输入和...
完成开发和测试后,开发者可以将应用程序打包成JAR和JAD文件,通过OTA(Over-the-Air)技术或者连接到电脑进行安装到实际的摩托罗拉手机上。 6. **API支持**: 摩托罗拉J2ME SDK可能还包含了特定于摩托罗拉设备的...
在SUN模拟器中开发J2ME应用时,开发者可以利用其丰富的调试工具,如查看和修改变量值、跟踪代码执行流程、设置断点等。此外,模拟器还可以模拟不同的设备特性,如屏幕尺寸、键盘输入和网络连接,帮助开发者测试各种...
3. 添加J2ME SDK的库文件,通常是` wtklib `目录下的所有.jar文件。 **步骤五:设置运行配置** 1. 选择“Run” -> “Run Configurations...”。 2. 在左侧树形结构中,选择“Java Application”,然后点击“New ...
8. **调试工具**:JDB(Java Debugger)是J2ME的调试工具,可以帮助开发者检查代码执行、设置断点、查看变量状态等。对于学习和优化代码至关重要。 综上所述,"jdb.rar_j2me" 包含了J2ME游戏开发的多个关键知识点,...
1. **wtklib**:这是J2ME WTK的核心库文件,包含运行时环境和模拟器所需的类库。开发者可以使用这些库来构建和运行J2ME应用程序。 2. **docs**:这部分包含WTK的API文档,对于理解J2ME API的使用至关重要。开发者...
这涉及文件下载管理,包括进度显示、断点续传和错误处理。为了节省存储空间,可能会采用高效的压缩算法,或者提供音乐质量选择,让用户根据需要选择下载的音质。 本地存储管理是另一个关键方面。由于移动设备的存储...
8. **错误处理和调试**:学习如何在Eclipse中设置断点、查看日志和调试J2ME应用,这对于问题定位至关重要。 9. **打包与部署**:了解如何将应用打包成JAR文件,以及如何将其安装到实际设备或模拟器上进行测试。 ...
5. **文件管理**:用户可以方便地导入和导出JAR文件,例如,压缩包中的QQ2007.jar软件,就是一款基于J2ME的早期QQ版本,可以通过KEmulator Lite在电脑上重温这款经典应用。 6. **自定义设置**:模拟器允许用户根据...
- J2ME支持HTTP和WAP协议进行网络通信,可以实现数据的下载、上传和网页浏览。 7. **文件系统** - 通过RecordStore API,开发者可以在设备上存储和读取数据,尽管资源有限,但依然提供了基本的数据持久化功能。 ...
- 考虑到J2ME设备可能具有网络连接,可以设计实现播放网络上的视频流,这需要处理网络连接、数据缓冲以及断点续传等问题。 在实现过程中,开发者可能还需要对设备进行适配,因为不同型号的手机可能有不同的屏幕...