- 浏览: 212269 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
fenglongcen:
java可以写测试脚本吗?
linux 通过脚本执行java程序 -
chensss2008:
我代为回答2楼的问题,呵呵,因为我也遇到了这个问题。使用adm ...
SVNManager使用介绍 -
小诗诗:
我想问一下怎么使用“服务器配置管理员”怎么登陆啊!!!! ...
SVNManager使用介绍 -
sbcqw93:
能创建文件夹吗?比如说:http://127.0.0.1/sv ...
SVNManager使用介绍 -
energykey:
yhjhoo 写道好像没有一个外部的jar包,请教以下如何在l ...
linux 通过脚本执行java程序
J2ME手机本地存储文件的上传,核心代码如下:
由于是在昨天的lwuit版手机本地文件读取上修改,所以代码中用到的资源文件在上一篇中可以下载,程序中只是写实现了图片的上传的代码,其它类型文件跟图片文件上传相同。
package com.mopietek; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import com.sun.lwuit.Display; public class MainMIDlet extends MIDlet{ private MainPanel panel = null; protected void destroyApp(boolean unconditional) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } protected void startApp() throws MIDletStateChangeException { Display.init(this); panel = new MainPanel(this); } public void exit(){ try{ destroyApp(false); }catch(MIDletStateChangeException e){ e.printStackTrace(); } this.notifyDestroyed(); } }
package com.mopietek; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.io.file.FileConnection; import javax.microedition.io.file.FileSystemRegistry; import com.sun.lwuit.Command; import com.sun.lwuit.Component; import com.sun.lwuit.Container; import com.sun.lwuit.Dialog; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.List; import com.sun.lwuit.TextArea; import com.sun.lwuit.events.ActionEvent; import com.sun.lwuit.events.ActionListener; import com.sun.lwuit.layouts.BorderLayout; import com.sun.lwuit.list.ListCellRenderer; import com.sun.lwuit.plaf.Border; public class MainPanel implements ActionListener{ private final String UP_DIR = ".."; private final String SEPS_STR = "/"; private final int SEPS_CHAR = '/'; private final String ROOT = "/"; private final String RES_PREFIX = "file://"; private final int BLOCK_SIZE = 256; private final String TEXT_EXT[] = {".TXT",".H",".HPP",".C",".CPPC",".INC"}; private final String IMAGE_EXT[] = {".JPG",".JPEG",".PNG",".GIF"}; private final String WEB_EXT[] = {".HTM",".HTML",".XML",".CSS"}; private final String CHARACTER_CODE = "UTF-8"; private MainMIDlet let = null; //主界面 private Form listForm = null; //内容列表 private List contentList = null; //显示文件用窗体 private Form textForm = null; private TextArea text = null; private Form imageForm = null; private Command cmdExit = null; private Command cmdView = null; //浏览目录/文件 private Command cmdDone = null; //退出浏览文件内容 private Command cmdUpload = null; //上传文件 private IconHelper helper = null; private String currentDir = null; public MainPanel(MainMIDlet mainMIDlet) { let = mainMIDlet; currentDir = ROOT; helper = new IconHelper(); listForm = new Form(); listForm.setLayout(new BorderLayout()); cmdExit = new Command("退出"); cmdView = new Command("浏览"); cmdDone = new Command("返回"); listForm.addCommand(cmdView); listForm.addCommand(cmdExit); listForm.addCommandListener(this); new BrowseThread(currentDir,true).start(); } public void actionPerformed(ActionEvent evt) { Command c = evt.getCommand(); if(c == cmdExit){ let.exit(); }else if(c == cmdView){ if(contentList.size() == 0){ new BrowseThread(ROOT,true).start(); }else{ final String url = ((MyContainer) contentList.getSelectedItem()).name.getText(); if(url.endsWith(SEPS_STR) == true){ new BrowseThread(currentDir + url,true).start(); }else if(url.endsWith(UP_DIR) == true){ backward(); }else{ new BrowseThread(currentDir + url,false).start(); } } }else if(c == cmdDone){ new BrowseThread(currentDir,true).start(); } } private void backward(){ int pos = currentDir.lastIndexOf(SEPS_CHAR, currentDir.length() -2); if(pos != -1){ currentDir = currentDir.substring(0, pos +1); }else{ currentDir = ROOT; } new BrowseThread(currentDir,true).start(); } class MyContainer extends Container{ private Label name; public MyContainer(String source){ name = new Label(source); name.getStyle().setBgTransparency(0); addComponent(name); } } class MyRenderer implements ListCellRenderer{ private Label focus; public MyRenderer(){ focus = new Label(); Border b = Border.createLineBorder(1, 0xff0000); focus.getStyle().setBorder(b); } public Component getListCellRendererComponent(List list, Object value, int index, boolean selected) { return (MyContainer) value; } public Component getListFocusComponent(List list) { return focus; } } class BrowseThread extends Thread{ private String url = null; private boolean isDirectory = false; public BrowseThread(final String _url,final boolean _isDirectory){ url = _url; isDirectory = _isDirectory; } public void run(){ if(isDirectory){ showDir(url); } else { showFile(url); } } public void showDir(final String dir){ Enumeration em = null; FileConnection fc = null; currentDir = dir; listForm.removeAll(); contentList = new List(); contentList.setListCellRenderer(new MyRenderer()); listForm.addComponent(BorderLayout.CENTER,contentList); try{ if(dir.equals(ROOT) == true){ //枚举根目录列表 em = FileSystemRegistry.listRoots(); }else{ //非根目录 fc = (FileConnection) Connector.open(RES_PREFIX + dir); em = fc.list(); MyContainer up = new MyContainer(UP_DIR); up.name.setIcon(helper.getIconByExt("/")); contentList.addItem(up); } while(em.hasMoreElements()){ String fileName = (String) em.nextElement(); if(fileName.endsWith(SEPS_STR)){ //如果为目录 MyContainer c = new MyContainer(fileName); c.name.setIcon(helper.getIconByExt("/")); contentList.addItem(c); System.out.println("filName------>"+fileName); }else{ //非目录(文件) MyContainer c = new MyContainer(fileName); c.name.setIcon(helper.getIconByExt(extractExt(fileName))); contentList.addItem(c); } } listForm.revalidate(); contentList.setSelectedIndex(0,true); if(fc != null){ fc.close(); } }catch(Exception ex){ ex.printStackTrace(); } listForm.show(); } //文件上传 public void showFile(final String fileName){ String url = "http://dev.mopietek.net:8080/waptest_1.0/httpup"; String tempFileName = fileName.toUpperCase(); byte[] data = null; try{ FileConnection fc = (FileConnection) Connector.open(RES_PREFIX + fileName,Connector.READ); if(!fc.exists()){ Dialog.show("Exception", "未找到文件", "ok","cancel"); } if(isEndWithIn(tempFileName,IMAGE_EXT) == true){ InputStream is = fc.openInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(4096); byte[] tmp = new byte[4096]; int n; while((n = is.read(tmp)) != -1){ out.write(tmp, 0, n); out.flush(); } is.close(); out.close(); data = out.toByteArray(); } if(fc != null){ fc.close(); } }catch(Exception ex){ ex.printStackTrace(); } try { HttpConnection sc = (HttpConnection) Connector.open(url, Connector.READ, true); sc.setRequestMethod(HttpConnection.POST); sc.setRequestProperty("Content-Type", "application/octet-stream"); sc.setRequestProperty("Content-Length", String.valueOf(data.length)); OutputStream output = sc.openOutputStream(); output.write(data); output.flush(); output.close(); } catch (IOException e) { e.printStackTrace(); } } // private String getRelativeName(final String fileName){ // int pos = fileName.lastIndexOf(SEPS_CHAR); // if(pos == -1){ // return (""); // } // return (fileName.substring(pos + 1, fileName.length())); // } private boolean isEndWithIn(final String fileName,final String[] extArray){ for(int i=0;i<extArray.length;i++){ if(fileName.endsWith(extArray[i]) == true){ return true; } } return false; } //获取扩展名(不包括'.'符号) private String extractExt(final String fileName){ int pos = fileName.lastIndexOf('.'); return (fileName.substring(pos + 1, fileName.length()).toLowerCase()); } } }
package com.mopietek; import java.io.IOException; import java.util.Hashtable; import com.sun.lwuit.Image; public class IconHelper { //图标资源 private Image imgFolder; private Image unknownImage; private Image textImage; //Audio private Image audioImage; //Picture private Image picImage; private Image jpgImage; //Video private Image sgpImage; private Image aviImage; private Image wmvImage; private Image mpgImage; //Web private Image zipImage; private Image htmlImage; private Image xmlImage; //Source private Image cImage; private Image cppImage; private Image headerImage; //图标管理容器 private Hashtable iconTable; public IconHelper(){ iconTable = new Hashtable(); try{ //载入图标资源 imgFolder = Image.createImage("/filetype/folder.png"); unknownImage = Image.createImage("/filetype/unknown.png"); textImage = Image.createImage("/filetype/text.png"); //Audio audioImage = Image.createImage("/filetype/audio.png"); //Picture picImage = Image.createImage("/filetype/pic.png"); jpgImage = Image.createImage("/filetype/jpg.png"); //Video sgpImage = Image.createImage("/filetype/3gp.png"); aviImage = Image.createImage("/filetype/avi.png"); wmvImage = Image.createImage("/filetype/wmv.png"); mpgImage = Image.createImage("/filetype/mpg.png"); //Web zipImage = Image.createImage("/filetype/zip.png"); htmlImage = Image.createImage("/filetype/html.png"); xmlImage = Image.createImage("/filetype/xml.png"); //Source cImage = Image.createImage("/filetype/c.png"); cppImage = Image.createImage("/filetype/cpp.png"); headerImage = Image.createImage("/filetype/header.png"); }catch(IOException e){ //图标资源 imgFolder = null; unknownImage = null; textImage = null; //Audio audioImage = null; //Picture picImage = null; jpgImage = null; //Video sgpImage = null; aviImage = null; wmvImage = null; mpgImage = null; //Web zipImage = null; htmlImage = null; xmlImage = null; //Source cImage = null; cppImage = null; headerImage = null; e.printStackTrace(); } initTable(); } private void initTable() { //Key为扩展名(不包括'.'符号),值为content type iconTable.put("/", imgFolder); iconTable.put("", unknownImage); iconTable.put("txt", textImage); //Source iconTable.put("c", cImage); iconTable.put("cpp", cppImage); iconTable.put("h", headerImage); //Web iconTable.put("html", htmlImage); iconTable.put("htm", htmlImage); iconTable.put("xml", xmlImage); iconTable.put("zip", zipImage); iconTable.put("jar", zipImage); //audio iconTable.put("mp3", audioImage); iconTable.put("wma", audioImage); iconTable.put("mid", audioImage); iconTable.put("wav", audioImage); //Picture iconTable.put("gif", picImage); iconTable.put("png", picImage); iconTable.put("jpg", jpgImage); iconTable.put("jepg", jpgImage); //Video iconTable.put("3gp", sgpImage); iconTable.put("avi", aviImage); iconTable.put("wmv", wmvImage); iconTable.put("mpeg", mpgImage); iconTable.put("mpg", mpgImage); iconTable.put("mp4", mpgImage); } //按照扩展名(不包括'.'符号) 获取文件的图标对象 public Image getIconByExt(final String extension) { Image temp = (Image) iconTable.get(extension); //是否为空,则使用默认图标替代 return ((temp == null) ? unknownImage : temp); } }
由于是在昨天的lwuit版手机本地文件读取上修改,所以代码中用到的资源文件在上一篇中可以下载,程序中只是写实现了图片的上传的代码,其它类型文件跟图片文件上传相同。
发表评论
-
Lwuit---小细节疑难杂症整理
2010-05-04 17:41 14481、textArea 显示文本内容,在部分手机上无法显示全部内 ... -
Lwuit布局管理
2010-05-04 15:40 1642布局管理器中一个比较特殊的管理器CoordinateLa ... -
J2ME Socket编程
2010-04-25 23:35 4096Socket是套接字,它是基于TCP协议的传输。 在J2ME ... -
Alert用法
2010-04-08 18:21 3885在J2ME中,关于Alert类是用来向用户发出警告信息,一般A ... -
Midlet与Servlet传递Cookie
2010-03-31 11:47 2258Cookie在Java ME平台中没有得到支持,因此要想维持客 ... -
J2ME手机编程中使用字体与游戏键值
2010-03-25 10:02 1412J2me中关于字体Font类的介绍: Font fon ... -
J2me低级UI界面中Canvas类与GameCanvas类
2010-03-23 10:18 3367关于MIDlet类中destroyApp( ... -
J2ME从服务器解析并读取xml文件
2010-03-09 16:55 2225J2ME从服务器解析并读取xml文件,其实跟在本地读取xml文 ... -
J2me语言国际化
2010-03-04 16:39 1599J2me手机开发在早期的WTK没用jsr 238包,所以程序要 ... -
J2ME下载并读取服务器txt文件
2010-03-04 11:56 2059J2ME下载并读取服务器txt文件,我用的公司的服务器,大家如 ... -
J2ME解析并读取xml文件
2010-03-03 17:37 5782用KXML解析读取xml文本 首先需要kxml2-2.3.0. ... -
读取手机本地图片和文本文件(Lwuit版)
2010-02-22 13:21 2559读取手机存储文件的核心代码: package com.m ... -
J2ME实现从服务器端下载文件(J2me for HttpConnection)
2010-02-07 21:54 2627J2ME实现从服务器端下载文件: 我以下载服务器文件并在手机客 ... -
Lwuit中关于TextField限制输入为数字的内容代码
2010-01-28 10:50 2050Lwuit中关于TextField限制输入为数字的内容代码 ... -
Lwuit 钟表ClockWidget小应用程序
2010-01-26 12:59 1621J2ME关于Lwuit应用的钟表ClockWidget程序 ... -
Lwuit实现九宫图特效程序
2010-01-25 12:16 2208最近在网上看到很多九宫图的程序说明,但大多数是转载的,一些知识 ... -
J2ME中关于Lwuit的标签的综合使用
2010-01-22 18:02 2481J2ME中关于Lwuit的标签的综合使用 由于我使用的主题对 ... -
Lwuit中关于TextArea、TabbedPane组件的使用说明
2010-01-21 16:15 2186TextArea组件的使用说明代码如下: package ... -
Lwuit中CheckBox、ComboBox组件的使用说明
2010-01-21 15:53 2413这几天刚刚开始接触LWUIT,前两天从网上搜到一兄台的博客写的 ... -
J2ME配置Lwuit
2010-01-20 11:34 2174使用Eclipse加入Lwuit jar包配置方法 1.先 ...
相关推荐
在J2ME中,实现文件上传到服务器的功能可能会面临一些挑战,因为J2ME的API相对有限且不支持大文件直接上传。下面将详细介绍如何克服这些限制,实现J2ME文件上传到服务器的过程。 首先,我们需要了解J2ME的基础知识...
4. **数据管理**:J2ME可能使用 Record Store API 来保存本地数据,或者通过HTTP协议与服务器进行数据交换,实现云同步和备份。 5. **网络通信**:利用J2ME的Connector类,可以实现HTTP、HTTPS和TCP/IP连接,用于...
【J2ME手机理财软件】是一款基于Java Micro Edition (J2ME) 平台开发的移动应用程序,专门设计用于帮助用户在手机上进行个人财务管理。J2ME是Java平台的一个子集,主要用于嵌入式系统,如早期的智能手机和平板电脑,...
J2ME的安全模型限制了某些可能对设备造成损害的操作,如访问本地文件系统和网络通信的权限控制。 十、优化技巧 由于资源有限,优化J2ME程序至关重要,包括减少内存占用、优化代码执行速度、减少图片大小等。 总之...
- **HttpConnection**:如果需要,J2ME应用可以使用HttpConnection实现与服务器的数据同步,如上传或下载联系人数据。 - **XML或JSON解析**:在网络通信中,数据通常以XML或JSON格式交换,J2ME可以通过内置的DOM或...
J2ME虽然功能受限,但依然可以通过`javax.microedition.io`包提供的`Connection`类来建立HTTP连接,从而实现文件上传。开发者需要将图片文件转换为适合传输的格式(如Base64编码),然后通过POST请求将数据发送到...
5. **数据存储**:Record Management System (RMS) 是J2ME中的本地数据存储系统,可用于保存游戏进度、用户设置等数据。 6. **游戏逻辑与性能优化**:由于J2ME运行在资源受限的设备上,开发者必须关注代码效率,...
图片数据到达服务器后,可能需要将其保存到本地文件系统或者数据库。这涉及到文件操作或数据库交互,需要遵循对应的API和最佳实践。 综上所述,J2ME中的Socket图片上传涉及多个步骤,包括Socket连接的建立、图片...
每个MIDlet在安装和运行时都需要获取相应的权限,如网络访问、读写本地文件等。 **9. 应用部署** JAR(Java Archive)文件是J2ME应用的标准打包格式,包含MIDlet的类文件和资源。jad(Java Application Descriptor...
- **步骤**:首先将JAD和JAR文件上传到服务器,然后配置服务器以识别这两种文件类型,最后修改JAD文件中的MIDlet-Jar-URL属性指向JAR文件的URL。 4. **OTA (Over-the-Air) 部署**: - **定义**:MIDlet通过无线...
5. 部署与发布:将网页版游戏上传至服务器,让玩家通过浏览器访问和体验。 总的来说,"J2ME RPG游戏边学边做网页版"项目涵盖了从移动平台游戏开发到Web端移植的完整流程,涉及到Java编程、图形与音频处理、用户交互...
6. **网络编程**:J2ME支持HTTP和TCP/IP协议,可以实现与服务器的通信,如下载数据、上传用户信息等,这对于都市行这样的应用可能很重要,可能用于获取实时信息或更新内容。 7. **数据存储**:J2ME中的Record ...
10. **发布与部署**:了解如何打包MIDlet,生成JAR和JAD文件,并将其上传到合适的服务器或通过OTA(Over The Air)方式分发给用户。 这个学习资源包很可能包含了上述所有知识点的实例代码,通过研究这些代码,你...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门设计用于资源有限的嵌入式设备和移动设备,如早期的智能手机、功能手机和掌上电脑。这个压缩包“11个J2ME例子.rar”包含了一系列J2ME的应用程序示例,...
J2ME是Java平台的一个子集,设计用于资源有限的嵌入式设备,如手机、PDA等。这个系统通过集成硬件传感器或接收来自外部交通监控设备的数据,为用户提供交通流量、路况信息以及可能的交通事件通知。 在【描述】中...
在J2ME开发中,类文件通常以".class"为扩展名,但有时为了上传或分发目的,可能会将它们转换为其他格式,如这个例子中的"PeekAndPick20"。这个文件可能包含了RSS数据的处理逻辑,比如解析XML,提取RSS项,或者与用户...
而LogClient1可能是手机端的日志上传客户端,使用HTTP或HTTPS协议,通过网络将本地日志数据发送到LogServer。为了节省流量和提高效率,日志可以先在本地缓存,然后在有稳定网络连接时批量上传。 四、日志分析 在...
例如,Mobile Information Device Profile (MIDP) 是J2ME用于移动设备的标准配置文件,包含了用户界面、网络连接以及数据存储等基础功能,这对于手机银行应用至关重要。 在这款手机理财应用中,我们可能发现以下...
开发者可以通过分析和运行“BCExchanger”代码,了解并学习如何在J2ME环境中实现蓝牙OBEX通信,从而在手机和电脑之间进行文件传输或其他数据交互。这种技术在早期移动设备中尤其有用,因为它们通常不支持其他高速...
- **请求定义**:客户端向服务器发送数据,通常用于提交表单或上传文件。 - **响应定义**:服务器接收并处理数据后,返回处理结果或状态码。 #### 五、与下载协议相关的头字段定义 - **Host**:指定请求的服务器...