Второй параметр replaceAll
- это , а также шаблон в некоторой степени. В частности, обратный слеш имеет особое значение. Однако вы не просто хотите использовать Pattern.quote
, так как это будет указывать больше, чем нужно. Вы хотите использовать Matcher.quoteReplacement
:
file = file.replaceAll(Pattern.quote("/"),
Matcher.quoteReplacement(File.separator));
В качестве альтернативы - и, скорее, проще - вообще не используйте регулярные выражения:
file = file.replace("/", File.separator);