J2ME FileConnection的文件路径?

时间:2010-03-22 10:32:49

标签: file-io java-me midp jsr75

我正在写一个需要写文件的MIDlet。我正在使用JSR-75的FileConnection来实现这一目标。

目的是让这个MIDlet在尽可能多的设备上运行(理想情况下所有支持JSR-75的MIDP 2.0设备)。

在几个仿真器和HTC Touch Pro2上,我可以完美地使用以下代码来获取文件系统的根目录:

Enumeration drives = FileSystemRegistry.listRoots();
String root = (String) drives.nextElement();
String path = "file:///" + root;

但是,在诺基亚S60第5版模拟器上,尝试向此路径打开FileConnection会抛出java.lang.SecurityException。显然,S60设备不允许连接到文件系统的根目录。我意识到我可以使用类似System.getProperty(“fileconn.dir.photos”)之类的东西,但所有设备都不支持。

那么,我的实际问题:获取创建FileConnection的路径的最佳方法是什么,这样可以实现最大的可移植性?

感谢。

修改的: 我想我可以迭代枚举中的所有根,并检查可写的根,但由于两个原因,这几乎不是最佳的。首先,不一定有任何可写的根源。其次,这可能是手机内存或存储卡,因此存储方法在各设备之间不一致,这相当丑陋。

2 个答案:

答案 0 :(得分:2)

您应该打开与根的只读连接,以找出它们包含的文件夹。

作为一般规则,当打开与文件夹的read_write连接时会抛出SecurityException,请尝试打开只读连接以浏览子文件夹以查找可写的连接。

特别是在Symbian(以及其他足以为MIDlet提供安全数据笼的平台)上,您可以使用System.getProperty("fileconn.dir.private");来查找可写区域。

答案 1 :(得分:0)

我会告诉你我们做了什么。我们有一个测试应用程序,只需找到文件系统根目录和SD卡根目录(如果适用)。我们将其设置为jad参数。代码从Jad文件中读取它。由于您不需要为不同的设备重新编译jar,因此只需更改具有不同文件系统根的手机的jad参数。