Java me 在J2ME中读取/写入文件而无需不断纠缠用户

Java me 在J2ME中读取/写入文件而无需不断纠缠用户,java-me,io,midp,series-40,Java Me,Io,Midp,Series 40,我正在编写一个简单的J2ME手机应用程序,我想在退出时保存该应用程序的状态。 通过谷歌搜索,我找到了FileConnection类: FileConnection filecon = (FileConnection) Connector.open("file:///E:/mynewfile.txt"); filecon.create(); // write data to file etc etc 诸如此类。这一切似乎都可行,但它有以下两个缺点。在我的S40手机上,每次我运行应用程序时,都会被

我正在编写一个简单的J2ME手机应用程序,我想在退出时保存该应用程序的状态。
通过谷歌搜索,我找到了FileConnection类:

FileConnection filecon = (FileConnection) Connector.open("file:///E:/mynewfile.txt");
filecon.create();
// write data to file etc etc
诸如此类。这一切似乎都可行,但它有以下两个缺点。在我的S40手机上,每次我运行应用程序时,都会被问到“让应用程序(废话)写入文件”之类的问题。我有其他可以保存其状态的应用程序(例如保存高分表的游戏),它们不会每次都问我是否可以写入文件。我错过了什么把戏

而当我在这里时,“//E:/mynewfile.txt”文件名也不理想,因为它适用于我的手机,但不适用于我儿子的手机(为什么应该这么做?),这意味着每当我希望程序在新手机上运行时,我都必须编辑和重新编译应用程序(我可以设想,程序会建立应用程序运行在谁的手机上,然后设置一个字符串,指向有效目录中的有效文件,但这肯定不是应该这样做的…).想必我不应该写E:/无论如何,但是否存在某种规范的“应用程序X放置其所有数据文件的地方”?它是否至少在某种程度上与设备无关?同样,想必我遗漏了一个技巧——我要问的两个问题可能是相关的

我应该怎么做?

1-您可以使用“RMS”而不是“fileconnection”来保存您的应用程序状态,并且它没有任何问题。
2-应用程序使用Connector.open()打开连接。输入字符串必须包含表单的完全限定绝对路径名:

file://<host>/<root>/<directory>/<directory>/.../<name>
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);   

我自己对我的问题的回答是:我可以使用RecordStore类的方法对程序资源中的文件进行读写。

这是由于与证书相关的签名!你必须购买证书,这些问题就会消失。什么?我必须为能够编写独立于设备的应用程序的特权付费??Meh:-/这是事实。要想删除大部分(如果不是全部)通知,你需要购买一个证书。这里有一个很大的误解。我已经找到了问题的答案,它不涉及支付任何费用。答案是使用RecordStore类的方法读写放置在在程序的资源方面。这似乎对我来说很好——从某种意义上说,我在两部手机上试用了我的程序,它在会话之间可以很好地保存和加载数据,而从来没有打扰过用户。所有这些都在起作用的例子是。
String galleryDir = System.getProperty("fileconn.dir.photos");   
FileConnection filecon = (FileConnection) Connector.open(galleryDir);