2012-01-27 66 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); 
相關問題