Каков наилучший способ заменить строку в цикле while

Каков наилучший способ заменить строку в цикле while, который читает строки из файла?

while ((line = reader.readLine()) != null) {
 if (line.contains("blabla")) {
  line = line.replaceAll("blabla", "eee");
 }
 writer.write(line);
}

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

Заменить строку можно было только в конце после прочтения всего файла. Если вы можете убедиться, что blabla действительно встречается только в 1 точке и больше нигде, то это, вероятно, будет лучше.

XtremeBaumer 06.05.2019 12:25

Тогда вам нужно вставить break; в качестве последнего утверждения в ваше условие if.

Joachim Rohde 06.05.2019 12:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
726
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать заменить это,

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 06.05.2019 12:44

@Gstark ваш код верен для задачи, которую вы описали здесь в комментарии. Тем не менее, вы должны сделать несколько тестов.

Lajos Arpad 06.05.2019 13:24

Другие вопросы по теме