Предположим, что у меня есть файл с именем abhishek.txt и содержит следующую строку
Я, и как тебя зовут.
Теперь я хочу написать
Абхишек
после "Я", как будто я Абхишек,.. Как напрямую писать контент в этой конкретной позиции.
Предположим, что у меня есть файл с именем abhishek.txt и содержит следующую строку
Я, и как тебя зовут.
Теперь я хочу написать
Абхишек
после "Я", как будто я Абхишек,.. Как напрямую писать контент в этой конкретной позиции.
Вы не можете вставлять данные в файл. Вы можете переписать данные в определенном месте с помощью RandomAccessFile
. Однако вставка требует изменения всех данных после нее. Для вашего случая попробуйте что-то вроде этого:
File file = new File("abhishek.txt");
Scanner scanner = new Scanner(file).useDelimiter("\n");
String line = scanner.next();
String newLine = line.substring(0, 5) + "Abhishek" + line.substring(5);
FileWriter writer = new FileWriter(file);
writer.write(newLine);
writer.close();
Вы не можете вставлять данные в файл... файловые системы (в общем) просто не поддерживают такую операцию. Обычно вы открываете один файл для чтения, а другой для записи, копируете первую часть файла из одного потока в другой, записываете дополнительную часть, а затем копируете вторую часть файла.
Если вы пытаетесь заменить исходный файл, вам необходимо удалить его и переместить новый файл на место.
Иногда бывает проще прочесть весь файл в памяти за один раз - это зависит от того, что вы пытаетесь сделать, и от того, насколько большой файл.
В общем, вам нужно прочитать старый файл, изменить содержимое в памяти и снова записать его.
Здесь есть много вариантов, независимо от того, читаете ли вы весь файл за один раз или небольшую часть за раз, замените ли вы существующий файл и т.д., но обычно это шаблон.
У вас есть три варианта:
Мне удалось сделать это с помощью метода RandomAccessFile:
С этим вы получаете файл, содержащий именно ожидаемый контент "Я Абхишек". Это работает, даже если бы у вас был контент после первой строки, который вы хотите сохранить в файле (это была моя первоначальная проблема: у меня был большой файл, и мне пришлось вставлять некоторый контент после определенной строки), а не писать на конец файла, что проще.