Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Чтение и запись файла JSR-75

Поиск:

Я немного попробую на пальцах так сказать объяснить общие принципы 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.......
Всех с подкравшимся Новым Годом, и наступающим Рохдеством!!!!

Автор: Dancer
Сайт: http://






Просмотров: 4351

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную