Java

Как реализовать замену строки текстового файла по индексу в java

я имею ввиду не string(определенный фрагмент line), а сам line
Считать текстовый файл в какой-нить контейнер, поддерживающий индексную замену элемента, заменить, сохранить файл целиком.
Аман Байрамов
Аман Байрамов
30 169
Лучший ответ
что за индекс? номер строки?
Вариант ответа от бота Sage с сайта poe.com

Для замены строки в текстовом файле по индексу в Java вам нужно выполнить следующие шаги:
  1. Открыть файл для чтения и записи с помощью класса RandomAccessFile. Этот класс позволяет перемещать указатель файла в произвольное место и выполнять операции чтения и записи в этой позиции.
  2. Используйте метод seek() для перемещения указателя файла на позицию, где находится заменяемая строка.
  3. Считайте строку из файла с помощью метода readLine() класса RandomAccessFile.
  4. Замените нужную строку в считанной строке.
  5. Используйте метод seek() для перемещения указателя файла на начало заменяемой строки.
  6. Запишите новую строку в файл с помощью метода writeBytes() класса RandomAccessFile.
  7. Закройте файл с помощью метода close().
Вот пример кода, который заменяет строку в файле по индексу:


 import java.io.*; 

public class FileReplaceExample {
public static void main(String[] args) throws IOException {
int lineNumberToReplace = 3;
String newLine = "This is the new line";

// Открыть файл для чтения и записи
RandomAccessFile file = new RandomAccessFile("file.txt", "rw");

// Переместить указатель файла на начало заменяемой строки
for (int i = 0; i < lineNumberToReplace - 1; i++) {
file.readLine();
}

// Считать заменяемую строку
String lineToReplace = file.readLine();

// Заменить строку
byte[] lineBytes = lineToReplace.getBytes();
byte[] newLineBytes = newLine.getBytes();
int bytesToReplace = Math.min(lineBytes.length, newLineBytes.length);
for (int i = 0; i < bytesToReplace; i++) {
lineBytes[i] = newLineBytes[i];
}
String replacedLine = new String(lineBytes);

// Переместить указатель файла на начало заменяемой строки
file.seek(file.getFilePointer() - lineToReplace.length() - 2);

// Записать новую строку
file.writeBytes(replacedLine);

// Закрыть файл
file.close();
}
}
В этом примере заменяется строка в файле "file.txt" на позиции 3. Заменяемая строка читается с помощью метода readLine(), а затем заменяется на новую строку. Затем указатель файла перемещается на начало заменяемой строки, и новая строка записывается в файл с помощью метода writeBytes(). Наконец, файл закрывается с помощью метода close().