2010-09-25 107 views
2

J2ME是否有類似RandomAccessFile類,或者有什麼方法來模擬這種特殊的(隨機訪問)功能?J2ME中的文件隨機訪問

問題是這樣的:我有一個相當大的二進制數據文件(〜600 KB),並且想要創建一個使用該數據的移動應用程序。該數據的格式是自制的,並且包含許多索引塊和數據塊。讀取在其他平臺上(如PHP或C)中的數據通常是這樣的:

  1. 讀取2個字節用於索引密鑰(K),另外2爲索引值(V),用於需要
  2. 跳過的數據類型從文件開始V字節尋求有文件位置的數據進行索引鍵K開始
  3. 讀取數據
  4. 利潤:)

這在程序流程中會發生很多次。

嗯,我正在研究在J2ME上做同樣的事情的可能性,雖然我承認我對整個Java事物很陌生,但我似乎無法找到超出InputStreamDataInputStream )類沒有基本的查找/跳轉到字節/返回位置函數我需要。

那麼,我有什麼機會?

回答

2

你應該有這樣的事情

try { 
    DataInputStream di = new DataInputStream(is); 
    di.marke(9999); 
    short key = di.readShort(); 
    short val = di.readShort(); 
    di.reset(); 
    di.skip(val); 
    byte[] b= new byte[255]; 
    di.read(b); 
}catch(Exception ex) { 
    ex.printStackTrace(); 
} 

我不喜歡使用的坊間/復位方法,我覺得這是更好地保存不能從文件開始讓你從VAL位置偏移可以跳過這些方法。我認爲他們在某些設備上有問題。

還有一點需要注意的是,我不建議打開一個600 KB的文件,它會在很多低端設備上崩潰應用程序,您應該將該文件分割爲多個文件。

+0

嗨,謝謝你的回答!但是,那麼,如何有效地尋求低於當前位置的位置呢? (比如說,你只需要讀取位置100的一個字節,現在你需要位置50的一個字節)? – Linas 2010-09-26 22:25:12

+0

不幸的是除了在這種情況下使用市場/重置方法沒有辦法。 – 2010-09-27 16:54:15

+0

我想通過在j2me中提供文件中的偏移量來隨機寫入。是否有任何方法? – CuriousCase 2011-03-08 18:06:35