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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение и запись файла JSR-75 
:(
    Опции темы
javastic
Дата 25.12.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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




Я немного попробую на пальцах так сказать объяснить общие принципы smile (полностью обработку исключений могу где-то пропускать, так что строго не судите smile, я тут только принципы попытаюсь объяснить)

Ты получил доступ к файлу file:///root1/src_file.txt (для тех кто не знает, это делается классами из пакета JSR-75, но для того чтобы можно было писать что-то в файл используя JSR-75, необходимо чтобы мидлет был подписан)
Код

private static FileConnection fc = null;
private fileInputStream fis = null; // Данный поток используем для чтения информации из файла
private fileOutputStream fos = null; //Данный поток используем для записи информации в файл
.....
void openFile() {
    try {
        fc = (FileConnection) Connector.open("file:///" +"root1/" + "scr_file.txt", Connector.READ_WRITE);
        if(!fc.exist()) {
            fc.create();
            fc.close();
            fc = (FileConnection) Connector.open("file:///" +"root1/" + "scr_file.txt", Connector.READ_WRITE);
        }
            } catch(Exception e) {
        System.out.println("!!!! ERROR: "+e.toString());
    }
}

далее, мы собираемся что-то записать в данный файл. Если нам всё равно что писать в него и мы не хотим сохранять в этом файле информацию, ту, что была ранее в файле (то есть делаем операцию REWRITE)
Код

void reWriteFile() {
    writeFile(0);
}
void writeFile(int offset)
    if (fc ==null) return;
    if (offset<0) return;
//fc.fileSize() - этот метод позволяет получить длину файла, то есть, если смещение
//будет указано больше чем размер файла, то мы будем писать в конец нашего файла.

    int tmpOffset = fc.fileSize();
    if(offset<tmpOffset) tmpOffset=offset;
    try {
//fc.openOutputStream(long offset) - данный метод позволяет нам открыть поток,
//который мы будем исползьовать для записи информации в  файл, 
//Файл мы используем через FileConnector fc (но не следует забывать, что данный коннектор 
//у нас должен быть объявлен как использующий доступ READ_WRITE, а то будет ошибка при 
//попытке записи в файл)
//параметр offset - это смещение в файле, то есть положение, с которого у нас начнётся в него запись
//проще говоря позиция, с которой начнётся запись в файл.
        fos = fc.openOutputStream(tmpOffset);
        if(fos == null) return;
// используя OutputStream мы можем писть методом wtite 
// лишь массив байт или цело число, поэтому и необходимо создать объект класса String, 
//а потом привести его к массиву байт

        fos.write((new String("Hello, WORLD!")).getBytes()); 
        fos.close();
        fos=null;
        System.gc();
   } catch(Exception e) {
        System.out.println("!!! ERROR during REWRITE file: "+e.toString());
   }
}

Ну, вот вроде бы и всё, ничего сложного. smile
Тут конечно можно ещё много чего изменить, более правильно расставить обработку исключений, сделать методы не void а хотябы boolean чтобы возварщались значения, того как прошла операция записи. можно много чего ещё навернуть и сделать код более пригодным для коменрческой эксплуатации, и т.д., но для обучения и понятия основ - думая этого вполне достаточно.

Dancer.......
Всех с подкравшимся Новым Годом, и наступающим Рохдеством!!!!




--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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