2

J2ME にはクラスに似たものRandomAccessFileがありますか、またはこの特定の (ランダムアクセス) 機能をエミュレートする方法はありますか?

問題は次のとおりです。かなり大きなバイナリ データ ファイル (約 600 KB) があり、そのデータを使用するモバイル アプリケーションを作成したいと考えています。そのデータのフォーマットは自家製で、多くのインデックスブロックとデータブロックが含まれています。他のプラットフォーム (PHP や C など) でのデータの読み取りは、通常、次のようになります。

  1. インデックス キー ( ) 用に 2 バイトを読み取り、必要なデータ型のKインデックス値 ( ) 用に別の2 バイトを読み取りますV
  2. ファイルの先頭からバイトをスキップして、インデックス キーのデータが開始Vするファイル位置をシークします。K
  3. データを読む
  4. 利益 :)

これは、プログラム フロー中に何度も発生します。

ええと、私は J2ME でまったく同じことを行う可能性を調査しています。私が Java 全体にまったく慣れていないことは認めますが、そうでないInputStream( DataInputStream) クラス以外のものを見つけることができないようです。私が必要とする基本的なシーク/バイトへのスキップ/戻り位置機能があります。

それで、私のチャンスは何ですか?

4

1 に答える 1

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();
}

私は marke/reset メソッドを使用しないことを好みます。これらのメソッドをスキップできるように、ファイルの先頭からではなく、val の場所からオフセットを保存する方がよいと思います。一部のデバイスでいくつかの問題があると思います。

もう 1 つ注意してください。600 KB のファイルを開くことはお勧めしません。多くのローエンド デバイスでアプリケーションがクラッシュするため、このファイルを複数のファイルに分割する必要があります。

于 2010-09-25T20:23:34.280 に答える