Я немного попробую на пальцах так сказать объяснить общие принципы (полностью обработку исключений могу где-то пропускать, так что строго не судите , я тут только принципы попытаюсь объяснить)
Ты получил доступ к файлу 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()); } }
|
Ну, вот вроде бы и всё, ничего сложного.  Тут конечно можно ещё много чего изменить, более правильно расставить обработку исключений, сделать методы не void а хотябы boolean чтобы возварщались значения, того как прошла операция записи. можно много чего ещё навернуть и сделать код более пригодным для коменрческой эксплуатации, и т.д., но для обучения и понятия основ - думая этого вполне достаточно.
Dancer....... Всех с подкравшимся Новым Годом, и наступающим Рохдеством!!!!
|