2009-07-23 13 views

risposta

20

Sfortunatamente, non esiste un operatore di escape completo in Java. È necessario scrivere il codice come:

String aa = "E:\\dev_workspace1\\AccessCore\\WebRoot\\DataFile"; 
12

Non c'è tutta operatore stringa di escape, ma, se è per l'accesso ai file, è possibile utilizzare uno slash:

String aa="E:/dev_workspace1/AccessCore/WebRoot/DataFile"; 

Windows allows sia in avanti che backslash come separatore di percorsi. Non funzionerà se si passa il percorso a un programma esterno che maneggia con esso e fallisce, ma è piuttosto raro.

+0

È in realtà Java che è intelligente? Ho pensato che questa fosse una conseguenza di Windows che consente/come separatore di file e \. –

+0

Nessuna idea: ho sempre pensato che fosse Java ma è possibile che si trattasse delle chiamate API di Windows. Regolato nel caso. – paxdiablo

+0

Heh, adoro il modo in cui le persone lavorano generosamente per il mio rappresentante! Grazie Pax per migliorare la risposta! :-) –

4

non potrebbe essere una risposta diretta alla tua domanda, ma mi sento questo dovrebbe essere sottolineato:

C'è una system-dependent default name-separator character.

+0

Quindi non c'è, ma come ha sottolineato Vinko, non hai davvero bisogno di preoccuparti di quella proprietà; le barre in avanti funzionano bene. –

3

Il modo davvero indipendente dal sistema è quello di fare questo:

String aa = "E:/dev_workspace1/AccessCore/WebRoot/DataFile"; 
String output = aa.replace('/', File.separatorChar); 

Vi darà "E: \ dev_workspace1 \ AccessCore \ WebRoot \ DataFile" su Windows e "E:/dev_workspace1/AccessCore/WebRoot/DataFile " quasi ovunque.

+0

Perché la sostituzione? Il '/' funziona sempre su Java e viene convertito automaticamente nel separatore-char dipendente dal sistema. – Mnementh

+0

Perché è davvero, davvero, davvero sicuro usare questa stringa. Puoi anche passarlo come parametro per dire un oscuro programma da riga di comando dell'era DOS su Windows o inviarlo a chiamate WinAPI molto antiche o qualsiasi altra cosa che non possa gestire le barre come separatore. –

+0

Wrap you replace è un if (File.seperatorChar! = '/') Come ottimizzazione per le piattaforme unix. – KitsuneYMG

1

Se si scrive un percorso, è necessario utilizzare "/" come separatore di percorsi in Java. Il '/' è il separatore del percorso ufficiale sotto Java e verrà convertito nel separatore appropriato per la piattaforma (\ sotto windows,/sotto unix). Il resto della stringa è invariato se passato al sistema, quindi il \ "funziona anche sotto Windows. Ma il modo corretto per rappresentare questo percorso è "E:/dev_workspace1/AccessCore/WebRoot/DataFile".

Se si desidera rappresentare un '\' in una stringa Java, è necessario sfuggire a un altro: "Questa stringa contiene un \".

Problemi correlati