Запись в середину текстового файла на Java - PullRequest
1 голос
/ 11 октября 2011

Какой лучший способ записи в середину текстового файла на Java?

Я знаю, что невозможно прочитать весь файл в память и записать его обратно. Но разбор действительно один из моих слабых навыков, и множество классов, связанных с файловым вводом / выводом, сбивают с толку (выбирая между File, FileWriter, FileOutputStream, BufferedWriter ... AHHHHH !!)

Допустим, у меня есть такой текстовый файл:

Быстрая коричневая лиса перепрыгнула через ленивую собаку. Ленивый пес рассмеялся глупая прыгающая лиса. Пса звали Пафф.

Допустим, я хочу добавить прилагательное "милый" перед словом "собака", в результате чего получается:

Быстрая коричневая лиса перепрыгнула через ленивую симпатичную собаку. Ленивый милый пес рассмеялся глупая прыгающая лиса. милую собаку звали Пафф.

Полагаю, мне нужна структура данных, поддерживающая вставку, поэтому массив символов, вероятно, не будет работать.

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Поскольку вы имеете дело с текстовым файлом, я думаю, что самый простой способ - использовать Scanner.

Вы можете использовать hasNextLine() и nextLine(), чтобы прочитать строки по одной за раз в переменную String, выполнить преобразование и распечатать результат ( скажем, в PrintStream).

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

0 голосов
/ 11 октября 2011

Вы можете прочитать каждую строку в файле, используя BufferedReader :: readLine (), а затем использовать String :: replaceAll (регулярное выражение строки, замена строки), чтобы найти и добавить текст.

С точки зрения зависимостей: BufferedReader <- FileReader <- File </p>

Я рекомендую вам проверить Java 5 API (есть аналогичный для Java 6, если вам больше нравится).

...