j2me读取TXT文件

liq330 2007-05-25 01:12:02
1.J2me读取TXT文件,如果在JAR里面就很快了,如果在文件系统里面就慢的可以...

2.为了读取出来的能够自动分行,所以把读出来的内容存放在了Vector数组里面.
在构造函数里面初始化了数组.
vector = getSubsection(str,font,width-10," ,.?!");
然后在paint函数里面读取数组的一部份显示一页,
如果不分页没什么问题,为了分页,加了按扭事件,改变读到数组的位置,比如第一页的时候是循环数组的1-15条,第二页就是15-30条..按扭后调用repaint();函数,可是出现了如下错误...如果把初始化数组的放在Paint函数里面就正常了,可是这样不是每点一回按扭都要重新把字符串分断存数组? 请问是什么原因,搞了很久,实在不明白.
java.lang.NullPointerException
at txtReader.paint(+43)
at javax.microedition.lcdui.Canvas.callPaint(+85)
at javax.microedition.lcdui.Display.repaint(+82)
at javax.microedition.lcdui.Display$DisplayAccessor.repaint(+14)
at javax.microedition.lcdui.Display$DisplayManagerImpl.repaint(+16)
at com.sun.midp.lcdui.DefaultEventHandler.repaintScreenEvent(+24)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+485)
...全文
1483 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liq330 2007-05-30
  • 打赏
  • 举报
回复
算了, 就这样吧,慢点就慢点了,已经做了一个等待的界面了,让用户慢慢等吧,我给分了,

我现在要开贴问另一个问题,能不能继承自己写的Canvas窗体啊,你快来吧,哈哈.!!!!
yanhan0615 2007-05-30
  • 打赏
  • 举报
回复
sorry,昨天看代码看错了,你这样写的速度已经很快了,可以尝试调整buffer的大小,可能还能改进一点
liq330 2007-05-30
  • 打赏
  • 举报
回复
高手,来段代码吧,哈哈.一会就给分啊.
tomkan 2007-05-29
  • 打赏
  • 举报
回复
那就一次一个 char
liq330 2007-05-28
  • 打赏
  • 举报
回复
文件初次加载很慢有没有办法解决啊?
liq330 2007-05-28
  • 打赏
  • 举报
回复
谢谢啊,这个搞定了...
yanhan0615 2007-05-28
  • 打赏
  • 举报
回复
一个BYTE的读确实是有点慢,可以考虑一次读一块(buffer)
liq330 2007-05-28
  • 打赏
  • 举报
回复
//返回字符串
public String getTextByUTF(String name) {
String strReturn = "";
int ic;
InputStream in = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
byte[] myData;
byte[] buffer = new byte[512];
try {

fconn=(FileConnection)Connector.open(name,Connector.READ);
in =fconn.openInputStream();
// in=getClass().getResourceAsStream(name);
if (in != null) {
while ((ic = in.read(buffer)) > 0) {
dos.write(buffer, 0, ic);
}
myData = baos.toByteArray();
strReturn = new String(myData, "UTF-8");
in.close();
}
dos.close();
baos.close();
} catch (Exception e) {
System.out.println("getTextByUTF Error:" + e.toString());
} finally {
in = null;
dos = null;
baos = null;
try
{
fconn.close();
}
catch(Exception e)
{

}
}
return strReturn;
}

这样啊,一百多K的文件就要花五六秒了.
yanhan0615 2007-05-28
  • 打赏
  • 举报
回复
你怎么做的加载?
yanhan0615 2007-05-25
  • 打赏
  • 举报
回复
初始化哪有放到paint()里面这么干的,放到构造函数中!!
liq330 2007-05-25
  • 打赏
  • 举报
回复
if(vector==null)
{
}
这样加了一下,原来第一页以显示,下一面的时候才不会显示,可是现在不报错也不显示了,有没有什么别的更好的方法?
「已注销」 2007-05-25
  • 打赏
  • 举报
回复
空指针错误
当你setCurrent的时候,就调用paint了。而这个时候你可能还没有进行分组,那个Vector为null的话就出空指针了

1.paint里判断下,如果Vector为空,就跳过这段绘制

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧