Quote Originariamente inviata da fermat Visualizza il messaggio
codice:
String str = "C:\\inetpub\\upload\\/AR/Allegati/PREVENTIVI/";
System.out.println(str.replaceAll("/", File.separator));
codice:
Exception in thread "main" java.lang.IllegalArgumentException: character to be escaped is missing
Il problema non è il primo argomento (cioè "/"). Lo slash / NON è un carattere "speciale" nelle regex. Il problema è il secondo argomento, perché sui Windows File.separator vale \ (come literal "\\") e il back-slash è un carattere speciale nelle regex e anche nell'argomento di sostituzione di replaceAll (vedi javadoc).

Potresti usare il replace(CharSequence target, CharSequence replacement) che non usa le regex. Ma comunque avresti il problema del caso "\\/" che non risolverebbe.

Una cosa più furba sarebbe fare un replace di tutte le occorrenze di una/più "\" e/o "/" per "aggiustarle" al corretto separator per il S.O.
codice:
String str2 = str.replaceAll("[\\\\/]+", Matcher.quoteReplacement(File.separator));

Questo, tra l'altro, funzionerebbe pure sugli Unix-like nel senso che se avessi un path non ben messo tipo:

"/tmp/\\prova\\hello.txt" (qui è scritto letterale, con \ raddoppiato)

lo sistemerebbe comunque bene a "/tmp/prova/hello.txt".