在J2ME中读取文件

时间:2011-02-21 11:48:29

标签: java netbeans java-me emulation

我对这个简单的代码段感到非常不安:

FileConnection fc = (FileConnection) Connector.open("file:///root1/photos/2.png");
System.out.println(is.available());
byte[] fileBytes = new byte[is.available()];
int sizef = is.read(fileBytes);
System.out.println("filesize:"+sizef);

当我在我的手机中部署这个midlet(具有适当的文件位置)它正常工作,即它显示正确的文件大小,但在PC模拟器中它不断给出文件大小:0。显然没有异常,我有适当的文件那个位置。

我在netbeans 6.9中使用j2mewtk sdk。我尝试卸载,安装wtk& NetBeans的。

另一件事是每次我运行模拟器它创建C:\Users\Mahsruf\j2mewtk\2.5.2\appdb\temp.DefaultColorPhone6新位置,如temp.DefaultColorPhone1,2,3,4等。

如果我在netbeans中使用jme SDK 3.0,文件大小仍为0,但现在在输出窗口中有一个额外的行:[WARN] [rms ] javacall_file_open: _wopen failed for: C:\Users\Mahsruf\javame-sdk\3.0\work\0\appdb\_delete_notify.dat

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这不是编码相关的问题。如果同一个仿真器外观的多个实例同时运行,则工具包会为每个实例生成唯一的文件路径。例如,在Windows上,DefaultColorPhone的实例可能具有workdir \ appdb \ temp.DefaultColorPhone1,workdir \ appdb \ temp.DefaultColorPhone2等文件路径名。

解决方案:文件workdir \ appdb \ DefaultColorPhone \ in.use会跟踪标记为正在使用的存储根的数量。如果模拟器崩溃,则需要删除in.use文件