Хотя я согласен, что персонаж не должен вызывать каких-либо проблем, вот решение для очень больших файлов:
def replaceSingleQuoteCharacterInFile(def input) {
if(input instanceof String) {
input = new File(input)
}
File out = File.createTempFile("temp_xml", ".xml")
out.withPrintWriter('UTF-8') { writer ->
input.eachLine('UTF-8') { line ->
writer.println line.replace('’', "'");
}
}
out.renameTo(input)
}
def input = new File('/path/to/input.xml')
replaceSingleQuoteCharacterInFile(input)
println input.text
Это приведет к потоковой передаче файла, заменяя проблемный символ. Он также выводит выходные данные во временный файл, а затем заменяет оригинал в конце, чтобы предотвратить повреждение входного файла во время обработки.
Обратите внимание также на использование replace
вместо replaceAll
- нет причин использовать regex
для простой замены статической строки.