`

J2ME 本地文件读写

    博客分类:
  • j2me
阅读更多

转载http://www.devdiv.net/viewthread-15766

发布: 2009-9-30 15:32 | 作者: kf156 | 来源: DevDiv 移动开发社区

 

 

 

测试前请确认手机 支持JSR75,且拥有文件 读写权限。Demo里的文件路径为诺基亚 、索爱的存储卡,模拟 器或其他品牌手机请改为相应的路径。


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.file.FileConnection;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 文件读写Demo
*
* @author kf156(亚日)
*
*/
public class FileOperations extends MIDlet implements CommandListener {
Form form = new Form("FileOperations");
StringBuffer sb = new StringBuffer();
String filePath = "file:///e:/1.txt";// 要读写的文件路径 索爱、诺基亚等存储卡
// String filePath = "file:///root1/1.txt";// 要读写的文件路径 模拟器
// StringItem si = new StringItem(null, "要写入的数据:");
StringItem info = new StringItem(null, null);
TextField tf = new TextField("要写入的数据", "测试", 100, TextField.ANY);
Command exit = new Command("退出", Command.EXIT, 1);
Command write = new Command("写文件", Command.OK, 1);
Command read = new Command("读文件", Command.OK, 1);
public FileOperations() {
  // form.append(si);
  form.append(tf);
  form.addCommand(write);
  form.addCommand(read);
  form.addCommand(exit);
  form.setCommandListener(this);
}
protected void destroyApp(boolean arg0) {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
  Display.getDisplay(this).setCurrent(form);
}
/**
  * 添加文字
  *
  * @param str
  *            要添加的文字
  */
private void addStr(String str) {
  sb.append(str + "\n");
  info.setText(sb.toString());
}
/**
  * 写文件
  *
  * @param b
  */
private void write(byte[] b) {
  addStr("路径为" + filePath);
  write(filePath, b);
}
private void write(String path, byte[] b) {
  addStr("写文件");
  FileConnection fc = null;
  OutputStream os = null;
  try {
   fc = (FileConnection) Connector.open(path);
   if (!fc.exists())// 若文件不存在
    fc.create();// 创建文件
   else
    fc.truncate(0);// 清空文件数据
   os = fc.openOutputStream();
   os.write(b);// 写入文件数据
   os.close();
   os = null;
   addStr("写文件完毕");
   fc.close();
   fc = null;
  } catch (IOException e) {
   e.printStackTrace();
   addStr("写文件出现异常" + e.toString());
  } catch (SecurityException e) {
   e.printStackTrace();
   addStr("写文件时出现权限错误");
  } finally {
   if (os != null) {
    try {
     os.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    os = null;
   }
   if (fc != null) {
    try {
     fc.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    fc = null;
   }
  }
}
/**
  * 读文件
  *
  */
private void read() {
  addStr("路径为" + filePath);
  read(filePath);
}
private void read(String path) {
  addStr("读文件");
  FileConnection fc = null;
  InputStream is = null;
  try {
   fc = (FileConnection) Connector.open(path);
   if (!fc.exists()) {// 若文件不存在
    addStr("文件不存在");
    return;
   }
   is = fc.openInputStream();
   byte[] b = new byte[(int) fc.fileSize()];
   is.read(b);// 读出文件数据
   addStr("文件内容:");
   addStr(new String(b));
   addStr("读文件完毕");
   is.close();
   is = null;
   fc.close();
   fc = null;
  } catch (IOException e) {
   e.printStackTrace();
   addStr("读文件出现异常" + e.toString());
  } catch (SecurityException e) {
   e.printStackTrace();
   addStr("读文件时出现权限错误");
  } finally {
   if (is != null) {
    try {
     is.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    is = null;
   }
   if (fc != null) {
    try {
     fc.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
    fc = null;
   }
  }
}
/**
  * 清空信息
  *
  */
private void cls() {
  sb.delete(0, sb.length());
  form.deleteAll();
  // form.append(si);
  form.append(tf);
  form.append(info);
}
public void commandAction(Command c, Displayable arg1) {
  if (c == write) {// 读文件
   new Thread() {
    public void run() {
     cls();
     write(tf.getString().getBytes());
    }
   }.start();
  } else if (c == read) {// 写文件
   new Thread() {
    public void run() {
     cls();
     read();
    }
   }.start();
  } else if (c == exit) {// 退出
   destroyApp(true);
   notifyDestroyed();
  }
}
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    file_j2me.rar_j2me_j2me 文件_读写文件

    URL 的前缀 "file://" 表示这是一个本地文件,而 "/store0/" 是存储区的标识,"myfile.txt" 是文件名。 读取文件的基本步骤如下: 1. 创建一个 `StreamConnection` 对象,使用 `Connector.open()` 方法,并传入...

    PDA.rar_PDA_j2me_j2me 图片_j2me 文件_j2me 通信

    javax.microedition.io.FileConnection接口提供了读写本地文件的能力。通过URI,我们可以打开、创建、删除文件或目录。在实际开发中,需要注意的是,由于资源有限,文件操作通常需要谨慎处理,避免占用过多内存。 ...

    j2me_file_manage

    例如,通过`file:///`协议访问本地文件系统,使用`openRead()`、`openWrite()`或`openDataOutputStream()`方法来读写文件。由于J2ME的限制,文件操作可能比Java标准版(Java SE)更为复杂,因为资源有限,且不同设备...

    J2ME完整的五子棋游戏

    - 文件系统:J2ME允许读写本地文件,游戏可能将用户数据、游戏进度等信息保存在本地。 6. **优化与兼容性** 在J2ME平台上开发游戏,需要考虑到各种设备间的性能差异,因此游戏可能会包含针对不同设备的优化策略,...

    j2me金山词霸完美版原码

    J2ME提供了RecordStore API来处理小规模的数据存储,或者通过文件I/O操作进行大文件的读写。 再者,金山词霸的查询功能是其核心,这涉及到字符串处理和搜索算法。原码中可能包含了高效的词汇索引和查找策略,例如...

    J2ME 中文教程 MIDP2.0

    - **文件系统支持**:允许应用程序读写本地文件,存储数据和资源。 - **连接性增强**:支持更多的网络协议,如HTTP和HTTPS,以及SSL/TLS加密,增强了安全性和网络通信能力。 - **XML解析器**:内置XML解析器,便于...

    J2ME手册

    每个MIDlet在安装和运行时都需要获取相应的权限,如网络访问、读写本地文件等。 **9. 应用部署** JAR(Java Archive)文件是J2ME应用的标准打包格式,包含MIDlet的类文件和资源。jad(Java Application Descriptor...

    J2ME 常用组件介绍

    它包括用户界面组件、网络访问支持以及文件存储API。 ### 2. 用户界面组件 J2ME通过MIDP提供了几种基本的UI组件,用于构建移动应用的交互界面: - **Canvas**: 是一个空白画布,允许开发者自定义绘图,实现复杂...

    【j2me技术团队】Java记事本源码

    可能使用了FileConnection API来读写本地文件。 5. **事件处理**:在用户与界面交互时,程序需要监听并响应各种事件,如键盘输入、按钮点击等。J2ME的Display类和Command类提供了事件处理机制。 6. **内存管理**:...

    J2ME开发入门(新)

    J2ME应用通常打包为JAR(Java Archive)文件,有时还需要jad(Java Application Descriptor)文件,用于描述应用信息。分发可以通过运营商的商店、第三方应用市场或直接通过网络下载。 **9. 性能优化** 由于J2ME...

    j2me入门教程j2me入门教程j2me入门教程

    J2ME提供了Record Management System (RMS) 用于本地数据存储,类似于简单的数据库系统。开发者可以创建记录存储区并读写数据。 8. **网络通信** MIDP提供了HttpConnection和WapPush接口,用于实现HTTP协议和WAP...

    基于J2me5个手机游戏经典例子源代码

    9. **文件存储**:游戏数据的持久化通常涉及本地文件系统的操作,例如保存用户进度、游戏设置等。开发者需要了解如何在J2ME中读写文件。 10. **性能优化**:由于移动设备资源有限,优化游戏性能至关重要。这包括...

    j2me开发大全源代码.zip

    4. **数据存储**:在J2ME中,通常使用Record Management System (RMS)进行本地数据存储。这些源代码可能包含了如何创建记录存储区,读写数据以及管理数据的示例。 5. **网络通信**:J2ME支持HTTP和WAP协议,允许...

    j2me fileconnection api

    2. **URL支持**:FileConnection API支持两种类型的URL,一种是本地文件URL(file:///),另一种是网络文件URL(例如,http://或ftp://),使得MIDlets能访问本地存储卡或网络上的资源。 3. **文件操作**:包括打开...

    J2ME 入门学习书籍打包下载

    - 文件系统访问:FileConnection API允许读写本地文件或存储卡。 - 游戏支持:Game API提供图形、动画和游戏输入处理。 4. **J2ME开发环境**: - NetBeans或Eclipse集成开发环境(IDE)支持J2ME开发,提供便捷的...

    J2ME-API.rar_j2me

    6. **数据存储**:RecordStore是J2ME中用来持久化数据的主要机制,它提供了一种在设备本地存储小量结构化数据的方式。 7. **无线消息协议(WMA)**:部分J2ME设备支持WMA,允许应用程序接收和发送短信服务。 8. **...

    j2me的midp2.0的源代码

    5. **文件系统增强**:MIDP 2.0提供了更灵活的文件存储机制,允许应用程序读写本地文件系统,从而可以保存用户数据或缓存资源。 6. **碰撞检测**:在描述中提到的"2.0的碰撞检测",这通常指的是在游戏中或图形应用...

    《手机游戏开发全书-J2ME完整实例精解》源码

    使用FileConnection API管理本地文件,保存游戏进度、用户设置等信息。理解流I/O操作对于读写文件至关重要。 8. 性能优化: 由于J2ME设备的性能限制,优化代码性能尤为关键。避免过多的对象创建,合理使用内存池...

    郭克华J2ME移动开发实战教学视频源代码

    3. **文件系统访问**:J2ME允许在设备的文件系统上进行读写操作,这在存储用户数据或下载资源时非常有用。学习者可以研究如何使用`FileConnection` API进行文件操作。 4. **数据持久化**:J2ME提供了Record ...

    J2ME Tutorial中文版

    8. **权限管理**:J2ME应用通常需要设备权限,如访问网络、读写文件等,这些权限在MIDlet Suite描述文件中定义。 9. **优化技巧**:由于资源限制,J2ME应用的性能优化至关重要。这包括代码优化、内存管理、减少图形...

Global site tag (gtag.js) - Google Analytics