站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题手机阅读器!帮我解决下,谢谢!

手机阅读器!帮我解决下,谢谢!

摘要: 手机阅读器!帮我解决下,谢谢!


我目前想做个手机阅读器
在读取文件列表有疑问
是否可以用FILE类来读取文件列表?
具我了解类库之间的关系
J2SE》CDC》CLDC
不知道J2SE中的FILE类能否运用
如果不能,请问用什么方法来读取手机中文件列表?谢谢


j2me好象没有这个类吧
有fileConnection
但是很多手机不支持
也就是jsr75


那也就是说一般用这个fileConnection类来实现文件的分列以及阅读罗?

还有具体点的吗?


手机的IO操作需要开发商的包支持,每个版本的手机不一样。比如moto的E680就需要moto自己的SDK来进行IO操作。你可以到MOTO,NOKIA的网站下载他们的手机的操作系统支持的相应的SDK,里面有文档的,用起来倒是很简单,关键是找对你要开发的手机支持的SDK。


http://developer.motorola.com/?path=1.2.6.25
这里可以下载moto的sdks(我用的moto手机,nokia不太清楚,呵呵),注意新版的sdk去掉了IO操作的包,不提供文件操作的接口,没法用来开发含有IO操作的KJAVA程序,你可以下载4.3或更老版本的sdk,里面就有IO操作的接口。


fileConnection类确实是可以对手机的文件系统进行操作,但是很郁闷,只要是涉及到文件操作的地方,不管是LIST还是OPEN或者其他操作,都需要确认安全级别,很烦,不过毕竟能省钱嘛

去看看JSR-75的DOC,上面有详细说明


如果要考虑通用性,还是需要做一个打包程序,把txt打包到Jar中,然后安装jar到手机上去


新手就是新手,呵呵,问题不断,希望能得到大家的帮助。
我已经查看并了解了FC API基本的介绍,自己做了个测试,想打开
并检查是否我自己电脑D盘下某个文件的存在,当成功后再进行读取
文件。还没到读取,检查就出问题了
写的测试代码如下:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.file.*;
import javax.microedition.io.*;

public class File extends MIDlet implements CommandListener{
private FileConnection f_conn = null;
private String tmp=null;
private Display display;
private Form f_f;
private Command list_exit=new Command("exit",Command.EXIT,1);
private Command list_start=new Command("start",Command.SCREEN,1);
public File() {
display=Display.getDisplay(this);
f_f=new Form("");
f_f.addCommand(list_exit);
f_f.addCommand(list_start);
f_f.setCommandListener(this);
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}

protected void pauseApp() {


}

protected void startApp() throws MIDletStateChangeException {
display.setCurrent(f_f);

}
public void commandAction(Command c,Displayable s){
if (c.getLabel().equalsIgnoreCase("Start"))
{
open_flie();
}
}
protected void open_flie()
{

try{
f_conn = (FileConnection)Connector.open("file://d//f_text.txt",Connector.READ);
//读取D盘下.txt文件,我电脑上D盘下的文件
if(f_conn.exists())
{
tmp="file is exists";
f_f.append(tmp);
display.setCurrent(f_f);
f_conn.close();
}
else
{
tmp="file is not exists";
f_f.append(tmp);
display.setCurrent(f_f);
f_conn.close();

}
}
catch(Exception e)
{}


}

}

工具ECLIPSE3.2,编译成功后运行,在模拟器中提示:要读取文件本地系统。是否要读取你的文件?
然后就不能动了,没反应了。
ECLIPSE报错信息:警告: 若要避免潜在的死锁,应该在 commandAction() 处理程序之外的其他线程中执行
可能会阻塞的
操作(如网络连接)。
请解释下这种情况产生的原因?解决方式是什么?
谢谢!



新建一个线程


路过,友情up...


上问题已经解决,新问题又出现了

就是FileConnection能否连接电脑上的文件?如何连接?
我用下面的方法无法连接我的电脑上D盘上的这个文件
f_conn = (FileConnection)Connector.open("file://d/f_text.txt",Connector.READ);

如果不能连接电脑上的,我如何测试连接阅读文件,不能可能每次打包然后放到手机上测试吧?


人家既然是访问手机的文件系统,PC上的肯定是不行拉
模拟器模拟的手机文件目录在WTK/appdb/目录下有个filesystem的目录,那个是模拟手机的根目录,里面应该有个root1文件夹,访问路径file:///root1/


OYE,楼上的BINGO
呵呵,谢谢
炮炮,刀刀,二当家
你们谁愿意留下个QQ,让我这个新手好问你们问题,拜托了
再次非常感谢


QQ我都没用好几年了,用MSN吧jiayi-yan@hotmail.com


Fileconnection类在线程类中使用有问题?
我建立了个新线程类 A
在A中使用Fileconnection
filedir_conn = (FileConnection)Connector.open("file:///root1/",Connector.READ);
然后用接着用filedir_conn的任何一个方法就用不下去了
f_conn.exists()
等任何方法都用不了
直接在B类MIDlet中用接口implements Runnable
然后用样的直接用线程,就可以运用上述方法

请问,如何在线程类A中同样使Fileconnection类的方法生效?


↑返回目录
前一篇: 为什么这个J2ME程序不能在NOKIA的手机上运行?
后一篇: 我做的蓝牙游戏出了点问题?