#java #java-me #rms
#java #java-me #rms
Вопрос:
Я создал приложение j2me для чтения и записи текстового файла
теперь во время чтения я читаю одну строку и отправляю ее на сервер. после этого я хочу удалить эту строку из текстового файла.
Я не понимаю, как это сделать. в каком-то примере я нашел решение как скопировать содержимое исходного файла в один объект, затем удалить эту строку из объекта, а затем удалить исходный файл и создать новый с этим новым объектом.
Я не думаю, что это хороший подход. есть ли какой-либо другой способ сделать это???
Редактировать:
на самом деле проблема в том, что одно приложение записывает некоторые данные в текстовый файл, а другое мое приложение считывает одну строку, отправленную на сервер, и удаляет эту строку.
Теперь, если я использую такой подход, как копирование нового объекта и удаление файла и запись нового файла с новым объектом, тогда я найду одну проблему
если файл удален, то первое приложение не может найти этот файл, поэтому оно может создать новый файл только с одними данными, а второе приложение создаст новый файл на основе нового объекта, поэтому мои данные будут потеряны
Редактировать:
Даже я пытался сделать то же самое с RMS, но когда оба приложения обращаются к одному и тому же RMS в то время, все данные в файле RMS очищаются. Первое приложение открывает RMS для записи, а второе — для синхронизации и удаления. но в то время, когда оба открывают RMS, все данные очищаются.
Возможно ли установить блокировку для файла RMS из одного приложения??
Комментарии:
1. Может быть, это не очень хорошая идея обмениваться данными с помощью текстовых файлов? Почему вы не используете RMS. Одно приложение создает записи в RMS. Второе чтение и удаление их.
2. @oxigen я пробовал это, но обнаружил проблему, когда оба приложения обращаются к одному и тому же RMS в то время, когда все мои данные теряются. вот почему я пытаюсь использовать file. смотрите мою правку.
3. Рассматривали ли вы возможность использования встроенной базы данных, такой как SQLite?
4. @Cipi пожалуйста, прочтите мою последнюю правку, касающуюся проблемы в RMS
5. @Papuass SQLite не поддерживается в J2ME, иначе это решит все мои проблемы.
Ответ №1:
Нет, вот как вы это делаете.
Вы не можете удалить строку из начала файла. Вам нужно было бы переписать файл без этой строки.
(Обратите внимание, что это не относится конкретно к java)
Комментарии:
1. Эмм … вы действительно не можете сделать то, что пытаетесь сделать.
2. @Mihir: RMS — это то, что вам нужно.
Ответ №2:
По мере вставки записей я создавал один файл для одной записи в одной конкретной папке, теперь этот файл считывается фоновым приложением и отправляется на сервер, который будет удален приложением.
таким образом, это решает проблему параллелизма при чтении и записи файла.
я знаю, что это не очень хороший подход, но я не нашел другого хорошего подхода.
Ответ №3:
В большинстве файловых систем нет механизма для удаления содержимого посередине. (уверен, что в j2me так и есть). Итак, стандартная практика — открыть новый файл; скопируйте старый файл до того места, где заканчивается ненужная строка, пропустите ее, затем скопируйте остальную часть файла. Я знаю, это звучит неэлегантно, но так оно и есть 🙂