2012-01-27 29 views
4

我正在编写一个简单的J2ME手机应用程序,并且我希望在退出时保存应用程序的状态。
周围的Googling使我的类的FileConnection:在不停止纠缠用户的情况下读取/写入J2ME中的文件

FileConnection filecon = (FileConnection) Connector.open("file:///E:/mynewfile.txt"); 
filecon.create(); 
// write data to file etc etc 

以及诸如此类。这一切似乎工作,它有以下两个缺点。在我的S40手机上,每次都在我运行该应用程序,我被问到“让应用程序(等等)写入文件?”或者一些这样的事情。我还有其他可以保存其状态的应用程序(例如,可以保存高分表的游戏),并且每次都不问我是否可以写入文件。我错过了什么招数?

虽然我在这里 - “///E:/​​mynewfile.txt”文件名也不理想,因为它适用于我的手机,但不适用于我儿子的手机(以及为什么),这意味着我每次需要在新手机上运行该程序时都必须编辑和重新编译该应用程序(我可以设想某种程序可以确定应用程序在哪个手机上运行,是我们中的一些人使用它 - 然后设置一个字符串指向一个有效的目录相应的有效文件,但这肯定不是它应该如何完成的......)。据推测,我不应该写信给E:/无论如何,但是是否有某种规范的“应用程序X放置所有数据文件的地方”?至少在某种程度上它以某种方式独立于设备?再次,大概我错过了一个诀窍 - 我所问的两个问题可能是相关的。

我该怎么做?

+1

这是由于证书相关的签名!你必须购买证书,这些问题将消失。 – pheromix 2012-01-30 05:17:09

+1

什么?我必须支付能够编写独立于设备的应用程序的特权?梅: -/ – 2012-01-31 21:30:12

+0

这就是现实。为了能够删除大部分(如果不是全部)通知,您需要购买证书。 – jean27 2012-02-06 08:32:55

回答

2

我自己对我的问题的答案:我可以使用RecordStore类的方法读取和写入放置在程序资源中的文件。

6

1-您可以使用“RMS”而不是“fileconnection”来保存您的应用程序状态并且它没有缠身。
2-应用程序使用Connector.open()打开连接。输入的字符串必须包括以下形式的完全合格的,绝对路径:

file://<host>/<root>/<directory>/<directory>/.../<name> 

Host元素可能是空的 - 而且常常会,当字符串是指在本地主机上的文件。根目录对应于特定存储单元的逻辑挂载点。 根名称是设备特定的。下表提供了根值的一些示例以及如何打开它们:

CFCard/ 
FileConnection fc = (FileConnection) Connector.open("file:///CFCard/"); 
SDCard/ 
FileConnection fc = (FileConnection) Connector.open("file:///SDCard/"); 
MemoryStick/ 
FileConnection fc = (FileConnection) Connector.open("file:///MemoryStick/"); 
C:/ 
FileConnection fc = (FileConnection) Connector.open("file:///C:/"); 
/ 
FileConnection fc = (FileConnection) Connector.open("file:////"); 

一些特殊的根必须由System.getProperty赚取()方法:

fileconn.dir.photos: Image capture through your Mobile camera. 
fileconn.dir.videos: Vedio capture through your Mobile camera. 
fileconn.dir.tones: Ring tones default directory. 
fileconn.dir.memorycard: Memory Card , SD Card , Flash Drive root directory 
fileconn.dir.private: Working directory of midlet 

例如:

String galleryDir = System.getProperty("fileconn.dir.photos"); 
FileConnection filecon = (FileConnection) Connector.open(galleryDir); 
相关问题