public static void replaceFromFileRegex(File file,String replace, String replacement) throws IOException {
Pattern pattern = Pattern.compile(replace);
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
String write = "";
while ((line = reader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
write = matcher.replaceAll(replacement);
}
}
reader.close();
BufferedWriter bufferedWriter = new BufferedWriter((new FileWriter(file, true)));
bufferedWriter.write(String.valueOf(write));
bufferedWriter.close();
}
Во-первых, использовать явное закрытие ресурсов в конце метода плохая практика, следует пользоваться либо try с ресурсами, либо закрывать их в finally.
Во-вторых, у лишний вызов String.valueOf
В-третьих, метод работает некорректно, вместо замены содержимого файла, он записывает измененный текст в конец, добавляя к старому.
Сам метод рабочий, проблема с null может быть или из-за некорректного передаваемого regex, или проблема с самим файлом