我对这个简单的代码段感到非常沮丧:
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 时(具有正确的文件位置),它可以正常工作,即它显示正确的文件大小,但在电脑模拟器中它不断给出文件大小: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
我做错了什么?
最佳答案
这不是与编码相关的问题。如果同一模拟器皮肤的多个实例同时运行,该工具包会为每个实例生成唯一的文件路径。例如,在 Windows 上,DefaultColorPhone 实例的文件路径名可能为 workdir\appdb\temp.DefaultColorPhone1、workdir\appdb\temp.DefaultColorPhone2 等。
解决方案: 文件 workdir\appdb\DefaultColorPhone\in.use 跟踪标记为正在使用的存储根的数量。如果模拟器崩溃,需要删除in.use文件
关于java - 在J2ME中读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5065548/