EDIT: изменено с replaceAll
на replace
- здесь вам не нужно регулярное выражение, поэтому не используйте его. (Это было действительно плохое дизайнерское решение со стороны команды Java API, IMO.)
Мой думаю, (поскольку вы не предоставили достаточно информации), это то, что вы делаете что-то вроде:
text.replace("\\", "\\\\");
Строки являются неизменяемыми в Java, поэтому вам нужно использовать возвращаемое значение, например,
String newText = oldText.replace("\\", "\\\\");
Если это не отвечает на ваш вопрос, пожалуйста, предоставьте дополнительную информацию.
(я бы также предположил, что обычно вы все равно не должны делать это самостоятельно - если это будет включать информацию в нечто вроде ответа JSON, я бы ожидал, что более широкая библиотека убегаю за тобой.)
Обратите внимание, что требуется удвоение, поскольку \
является escape-символом для строковых (и символьных) литералов Java. Обратите внимание, что, поскольку replace
не обрабатывает входные данные как шаблоны регулярных выражений, нет необходимости выполнять дополнительное удвоение, в отличие от replaceAll
.
РЕДАКТИРОВАТЬ: Теперь вы получаете FileNotFoundException
, потому что не имя файла с двойной обратной косой чертой в - что заставило вас думать, что это было? Если вы хотите использовать его в качестве действительного имени файла, почему вы удваиваете обратную косую черту?