Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение текстовой инф в памяти 
:(
    Опции темы
Nemesis
Дата 11.6.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



Всем привет!
Не подскажите как я могу сохранить файл с определенной текстовой информацие в память телефона. И как затем этот файл найти?
--------------------
PM MAIL   Вверх
Dancer
Дата 14.6.2005, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Ну, либо в файловой системе телефона (используй FileSystem API), либо используй RMS. Для того, чтобы положить файлик в RMS придётся использовать COMM API (для чтения файла мидлетом), далее его сохраняем в RMS. Только нужно выяснить, каков объём твоей RMS. (ты можешь выделять память под RMS из JAD файла. Есть атрибут: MIDlet-Data-Size: 100000 значение вводится к байтах. Кажется ограничен до 512Кб но в принципе разные производители могут этот размер делать меньше. Так что лучше вначале либо выяснить, либо эксперементальным путём получить smile) )


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Nemesis
Дата 16.6.2005, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



А можно пример небольшой? Пробовал с помощью RMS. Создал там класс, который implements интерфейс RecordListener. Затем создал переменную класса RecordStore. Потом у меня есть информация в виде текста, скажем в переменной String textStore. B мне ее нужно как раз сохранить в памяти телефона. Как это сделать? Пробовал метод addRecord, перехватид там все возможные исключения
catch(RecordStoreNotOpenException RSNOE){}
catch(RecordStoreException RSE){}
catch(SecurityException SE){}

но прога встает на методе addRecord и пишет след ошибку: unavailable source file. В качестве аргумента для addRecord брал ту строку textStore.getBytes()...

Вот весь код проги, что не так и как нужно правильно?

Код

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;

public class FileSystem extends MIDlet implements CommandListener, RecordListener
{
    private TextBox TextForStore;
    private Command exit;
    private Command Ok;
    private Display displ;
    
    private RecordStore RS;
    private int RSid;
    
    public FileSystem()
    {
        displ = Display.getDisplay(this);
        
        TextForStore = new TextBox("Текст", "Введите текст", 256, TextField.ANY);
        exit = new Command("Выход", Command.EXIT, 1);
        Ok   = new Command("Ok", Command.OK, 2);        
                     
    }
    
    public void startApp() 
    {        
        
        TextForStore.addCommand(exit);
        TextForStore.addCommand(Ok);
        TextForStore.setCommandListener(this);
                
        displ.setCurrent(TextForStore);
    }
    
    public void pauseApp() 
    {
    }
    
    public void destroyApp(boolean unconditional) 
    {
    }
    
    public void recordAdded(RecordStore recordStore, int param) 
    {
    }
    
    public void recordChanged(RecordStore recordStore, int param) 
    {
    }
    
    public void recordDeleted(RecordStore recordStore, int param) 
    {
    }
    
    public void commandAction(Command command, Displayable displayable) 
    {
        if(command == exit)
        {
            destroyApp(false);
            notifyDestroyed();
        }
        
        if(command == Ok)
        {               
            SaveDialog();
        }
    }
    
    void SaveDialog()
    {
        String textStore = TextForStore.getString();
        
        try
        {
            RSid = RS.addRecord(textStore.getBytes(), 0, 100); // Здесь ошибку выдает!
        }
        
        catch(RecordStoreNotOpenException RSNOE){}
        catch(RecordStoreException RSE){}
        catch(SecurityException SE){}
        
    }
    
}


Очень прошу помочь! Это действительно срочно!


Добавлено @ 01:45
Ммм... быть может я не использую метод addRecordListener класса addRecordListener??? Но как им пользоваться? Что нужно в качестве параметра? Пробовал this не канает...
Добавлено @ 01:46
Сори, там не так, а вот так:

Ммм... быть может я не использую метод addRecordListener класса RecordStore??? Но как им пользоваться? Что нужно в качестве параметра? Пробовал this не канает...
Добавлено @ 01:49
Сори, там не так, а вот так:

Ммм... быть может я не использую метод addRecordListener класса RecordStore??? Но как им пользоваться? Что нужно в качестве параметра? Пробовал this не канает...
Добавлено @ 01:50
Простите за флуд, у меня лаги с инетом
--------------------
PM MAIL   Вверх
Dancer
Дата 16.6.2005, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Да, код конечно шедевральный smile)
RS - это у тебя твоя RecordStore, но ты нигде ещё в своём коде не выделил под неё память, и даже не создал.
Для этого есть статические методы в классе RecordSrote
Цитата
static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary, int authmode, boolean writable)
static RecordStore openRecordStore(String recordStoreName, boolean createIfNecessary)
static RecordStore openRecordStore(String recordStoreName, String vendorName, String suiteName)


Замени метод SaveDialog на нижеследующее:
Код

    void SaveDialog()
    {
        String textStore = TextForStore.getString();
        
        try
        {
            RS = RecordStore.openRecordStore("MyText", true);
            RSid = RS.addRecord(textStore.getBytes(), 0, 100); // Здесь ошибку выдает!
        }
        
        catch(RecordStoreNotOpenException RSNOE){System.out.println("!!!RecordStoreNotOpenException:"+RSNOE.toString());}
        catch(RecordStoreException RSE){System.out.println("!!!RecordStoreException:"+RSE.toString());}
        catch(SecurityException SE){System.out.println("!!!SecurityException:"+SE.toString());}
        catch(Exception e) {System.out.println("!!!Exception:"+SE.toString());}
        
    }


Далее думаю сам разберёшься smile)

Это сообщение отредактировал(а) Dancer - 16.6.2005, 09:03


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Nemesis
Дата 16.6.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



Спасибо за код, теперь более понятно. Но вот проблема: RSid = 0 после выполнения метода RSid = RS.addRecord(textStore.getBytes(), 0, 100);. И когда я пытаюсь загрузить информацию, то подставляя в качесве аргумента идентификатор RSid у меня ошибка... Почему RSid = 0 ? Ведь текст в textStore есть.

Заранее спасибо!
--------------------
PM MAIL   Вверх
DarkDS
Дата 16.6.2005, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: нет
Всего: 16



Может поможет данная статейка:
Technical Articles and Tips
Record Management System Basics
http://developers.sun.com/techtopics/mobil...tips/rmsbasics/
PM MAIL   Вверх
Dancer
Дата 17.6.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



RecordStore (RS) не была закрыта после добавления данных. Поэтому ты и не смог ничего прочитать. Либо после добавления поставь RS.closeRecordStore(); либо перед тем местом, где ты хочешь из своей RS что-то читать.
Nemesis, у тебя JavaDocs по MIDP API есть? Там всё подробненько описано, по всем методам и как ими пользоваться. Вроде бы с wtk доки всегда идут.


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Nemesis
Дата 17.6.2005, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



Все, спасибо, теперь все отлично, просто у меня еще ошибка, здесь
RSid = RS.addRecord(textStore.getBytes(), 0, 100);
нужно писать не 100, а textStore.length(), видим нужна точная длина.

А по поводу ДОК, то я их читаю, дело в том, что они там пичкают кучу всего, т.е. чтобы полностью показать работу пакета. В том числе там интерфейсы, которые мне пока не нужны, а сидеть и разбираться во всем том довольно муторно.

Спасибо за помощь! Как только 100 постов - реп. ;)

--------------------
PM MAIL   Вверх
111
Дата 5.2.2006, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.8.2003

Репутация: 1
Всего: 1



Есть отличный перевод на русский статьи по работе с RMS. Кратко и понятно описаны все функции, ну там чтение, запись. Есть примеры.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.