Воссоздание файла и запись нового содержимого - PullRequest
0 голосов
/ 01 марта 2011

Я пытаюсь удалить строку из текстового файла в Java, я прочитал вокруг, и кажется, что есть несколько решений: удалить файл и воссоздать его и записать в него, или записать во временный файл и переименуй его. Кажется, что оба решения включают закрытие потоков, я могу упустить что-то простое здесь, но как я могу использовать устройство записи с файлом после его закрытия, есть ли что-то, что я могу сделать, чтобы запустить новый модуль записи сразу после воссоздания или переименования файл, чтобы я мог изменить новый файл?

Например:

У меня есть файл movies.txt, я сохраняю все строки в этом файле в переменную, закрываю потоки в movies.txt, удаляю movies.txt и создаю movies.txt, как я могу записывать в новые фильмы. TXT после того, как я закрыл поток для него?

Или, если я переименую файл:

У меня movies.txt, я создаю temp.txt и записываю все, от movies.txt до temp.txt, закрываю потоки на movies.txt, переименовываю temp.txt в movies.txt, как мне записывать в movies.txt если потоки закрыты?

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

Ваш метод временного файла может быть проще. Скажем, вы хотите удалить n-ую строку из файла, вот шаги, которые вы хотите выполнить.

  • Создание считывателя для целевого файла
  • Создать программу записи во временный файл
  • Чтение каждой строки из исходного файла и запись во временный файл <--- сделать это n-1 раз </li>
  • Пропустить n-ю строку
  • Чтение каждой строки из исходного файла и запись во временный файл до конца исходного файла.
  • Закрыть программу чтения исходного файла и программу записи временных файлов.
  • Удалить исходный файл и переименовать временный файл в имя исходного файла.
0 голосов
/ 01 марта 2011

Я думаю, что вы думаете, что, если вы снова откроете файл для записи, вы закроете его текущее содержимое.

Как правило, это правда, но вы также можете открыть файл в режиме добавления записи; например, используя этот конструктор .

  FileOutputStream fos = new FileOutputStream("file.txt", true);

Это приводит к тому, что вывод записывается в конец файла, если он уже существует.

(Возможно, есть другие способы сделать это, но это простой способ.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...