Каков наилучший способ заменить строку в цикле while, который читает строки из файла?
while ((line = reader.readLine()) != null) {
if (line.contains("blabla")) {
line = line.replaceAll("blabla", "eee");
}
writer.write(line);
}
правильно ли это, я хочу прочитать все строки файла и проверить каждую строку, если она содержит это слово, есть только одна строка, содержащая это слово, если она содержит его, замените это слово и не проверяйте другие строки.
Тогда вам нужно вставить break; в качестве последнего утверждения в ваше условие if.




Вы можете использовать заменить это,
File your_file = new File(filePath)
String oldContent = “”;
BufferedReader reader = new BufferedReader(new FileReader(your_file));
String line = reader.readLine();
while (line != null)
{
oldContent = oldContent + line + System.lineSeparator();
line = reader.readLine();
}
String newContent = oldContent.replaceAll("wantToBeReplace", newString);
FileWriter writer = new FileWriter(your_file);
writer.write(newContent);
reader.close();
writer.close();
Вы можете использовать логический флаг в качестве условия в своем while и обновить его в своем if:
boolean found = false;
while ((!found) && ((line = reader.readLine()) != null)) {
if (found = line.contains("blabla")) {
line = line.replaceAll("blabla", "eee");
}
writer.write(line);
}
Проблема в том, что файл содержит около 200 строк, и он читает каждую строку, а затем в том же цикле while записывает каждую строку в другой файл. Я хотел бы заменить слово, если строка, которую оно содержит. После того, как он заменит его, он не заменит его, поэтому я спрашиваю, является ли написанный выше код правильным или нет.
@Gstark ваш код верен для задачи, которую вы описали здесь в комментарии. Тем не менее, вы должны сделать несколько тестов.
Заменить строку можно было только в конце после прочтения всего файла. Если вы можете убедиться, что
blablaдействительно встречается только в 1 точке и больше нигде, то это, вероятно, будет лучше.