Файл произвольного доступа в J2ME - PullRequest
2 голосов
/ 25 сентября 2010

имеет ли J2ME что-то похожее на класс RandomAccessFile, или есть какой-либо способ эмулировать эту конкретную (произвольный доступ) функциональность?

Проблема заключается в следующем: у меня довольнобольшой файл двоичных данных (~ 600 КБ) и хотел бы создать мобильное приложение для использования этих данных.Формат этих данных самодельный и содержит много блоков индекса и блоков данных.Чтение данных на других платформах (например, PHP или C) обычно происходит следующим образом:

  1. Считайте 2 байта для ключа индекса (K), еще 2 для значения индекса (V) длянеобходим тип данных
  2. Пропуск V байтов от начала файла для поиска позиции файла там данные для ключа индекса K начинается
  3. Считывание данных
  4. Прибыль:)

Это происходит много раз во время выполнения программы.

Гм, и я изучаю возможность сделать то же самое на J2ME, и хотя я признаю, что 'Я совершенно новичок в Java, и я не могу найти ничего, кроме InputStream (DataInputStream) классов, которые не имеют базового поиска/ переход к байту / возврат функций позиции, которые мне нужны.

Итак, каковы мои шансы?

1 Ответ

2 голосов
/ 26 сентября 2010

У вас должно быть что-то вроде этого

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, а не от начала файла, чтобы вы могли пропустить эти методы. Я думаю, что у них есть проблемы с сомом на некоторых устройствах.

Еще одно замечание: я не рекомендую открывать файл размером 600 КБ, это приведет к сбою приложения на многих младших устройствах, его следует разбить на несколько файлов.

...