Сохраняйте формат, он выглядит как стандартный файл CSV (значения, разделенные запятыми, где «запятая» - это символ «>»), а файлы CSV легко читаются и пишутся!
Поскольку вы не можете заменить содержимое файла «на диске», вам придется прочитать файл в память, перезаписать его в памяти с необходимыми изменениями и перезаписать его на диск.
Простая модель для файла - это двумерный массив строк, каждая строка файла - строка, каждое значение - столбец, который составляет 4 столбца. Фамилия (строка, которую вы хотите заменить) теперь всегда равна matrix[lineNumber][1]
. Измените значение во втором столбце для каждой строки и все готово.
Для производственного кода я бы кодировал класс для представления записи. Тогда ваш код может выглядеть так:
public void replace(File inputFile, String newName) {
List<Person> persons = new ArrayList<Person>();
// read the file
List<String> lines = readFile(inputFile);
// create a person instance for each line
for (String line:lines) {
String[] values = line.split(">");
persons.add(new Person(values));
}
// change the last name
for (Person person:persons) {
person.setLastName(newName);
}
// store all persons to file
writeFile(inputFile, persons);
}
Обратите внимание, что фактическая работа (ввод-вывод файла, изменение имен) выполняется в разных методах и классах. Это сохраняет основной алгоритм внутри метода замены доступным для чтения.