2

我正在编写一个需要写入文件的 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 的路径的最佳方法是什么,以实现最大的可移植性?

谢谢。

编辑:我想我可以遍历枚举中的所有根,并检查一个可写的根,但这并不是最优的,原因有两个。首先,不一定有任何可写的根。其次,这可能是手机内存或存储卡,因此存储方式在设备之间不会保持一致,这很丑陋。

4

2 回答 2

2

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

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

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

于 2010-03-22T18:58:01.943 回答
0

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

于 2010-03-22T18:57:12.850 回答