Есть ли способ использовать Java PrintWriter для записи в определенную строку?

У меня есть программа на Java, которая использует PrintWriter для записи текста в файл с использованием множества операторов .println(), все работает нормально. Я хочу знать: есть ли способ записать определенную строку в выходной файл?

например Если моя программа записывает 10 строк в выходной файл, используя 10 операторов .println(). Есть ли способ, чтобы в конце моей программы я мог сказать ей написать строку в 3-ю строку текста в файле, а затем сдвинуть оставшиеся 7 строк на одну строку, чтобы освободить место для новой 3-й строки ?

Любая помощь будет принята с благодарностью, Заранее спасибо, Стивен.


person Stephen Walsh    schedule 09.05.2014    source источник


Ответы (3)


Вы можете сделать это, но вы должны сделать удар.

Самое простое решение — переписать файл с нужной вам дополнительной строкой.

Или, используя RandomAccessFile, вы можете найти третью строку, скопировать все данные в файл вниз и вставить строку, которую хотите добавить.

person Peter Lawrey    schedule 09.05.2014

Нет, PrintWriter может только перезаписывать файл или добавлять его в конец.

Если вы «переписываете» строку, длина новой строки может отличаться от исходной, поэтому все содержимое, следующее за строкой, должно быть смещено, чего PrintWriter не может сделать.

person icza    schedule 09.05.2014

Не только PrintWriter не может этого сделать. Все остальные писатели и потоки вывода также не могут этого сделать. Даже каналы произвольного доступа не могут этого сделать (само по себе).

Это потому, что «линия» не имеет определенной длины. Кроме того, если вы хотите что-то вставить, вам придется переместить все остальное, что идет после этого.

Что вы можете сделать, так это переместить поток и перезаписать то, что есть.

person Ingo    schedule 09.05.2014