2015-05-02 2 views
3

Это для Java Я пытаюсь написать программу, которая пишет в текстовый файл с помощью PrintWriter. Мне удалось добавить текст в конец файла, но мне нужно написать текст между двумя словами.Как написать текст между двумя строками в текстовом файле. Java

Ex: текст перед: собака мышь текст после того, как: собаки кошки мыши

Текстовый файл относительно долго, поэтому я не могу просто читать все это и редактировать строки оттуда.

Что было бы лучшим способом сделать это?

+0

нашли решение? –

ответ

1

Вы можете использовать класс RandomAccessFile.

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw"); 

Обратите внимание на второй входной параметр для конструктора: «rw». Это режим, в котором вы хотите открыть файл. «Rw» означает режим чтения/записи. Проверьте JavaDoc для более подробной информации о том, каких режимах вы можете открыть RandomAccessFile в.

двигающихся вокруг RandomAccessFile

Для чтения или записи в определенном месте в RandomAccessFile вы должны сначала поместить указатель файла на место для чтения или записи. Это делается с использованием метода seek(). Текущую позицию указателя файла можно получить, вызвав метод getFilePointer().

Вот простой пример:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw"); 

file.seek(200); 

long pointer = file.getFilePointer(); 

file.close(); 

Чтение из RandomAccessFile

Чтение из RandomAccessFile осуществляется с помощью одного из своих многочисленных чтения() методы. Вот простой пример:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw"); 

int aByte = file.read(); 

file.close(); 

Метод чтения() считывает байт расположенного в положение в данный момент файла, на который указывает указатель файла в экземпляре RandomAccessFile.

В этом случае JavaDoc забывает упомянуть: метод read() увеличивает указатель файла, указывая на следующий байт в файле после того, как только что прочитанный байт! Это означает, что вы можете продолжить вызов read() без необходимости вручную перемещать указатель файла.

Записи в RandomAccessFile

Записи в RandomAccessFile может быть сделан с помощью одного это его многих записей() методы. Вот простой пример:

RandomAccessFile file = new RandomAccessFile("c:\\data\\file.txt", "rw"); 

file.write("Hello World".getBytes()); 

file.close(); 

Так же, как с помощью метода чтения() метод записи() продвигает указатель файла после вызова. Таким образом, вам не нужно постоянно перемещать указатель файла для записи данных в новое место в файле.

близко()

RandomAccessFile имеет метод Close(), который должен быть вызван, когда вы закончите с использованием экземпляра RandomAccessFile. Вы можете увидеть пример вызовов close() в приведенных выше примерах.

+0

Вопрос был о ** добавлении ** некоторого текста между другими в файле. Но это решение ** заменяет ** существующий текст, начиная с позиции указателя. – Salvador