2009-07-23 7 views

Répondre

20

Malheureusement, il n'y a pas d'opérateur d'échappement de chaîne complète dans Java. Vous devez écrire le code comme:

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

Il n'y a pas d'opérateur tout d'échappement de chaîne, mais, si elle est pour l'accès aux fichiers, vous pouvez utiliser une barre oblique:

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

Windows allows les deux barres obliques avant et arrière en tant que séparateur de chemin. Cela ne fonctionnera pas si vous passez le chemin à un programme externe qui le mange et échoue, mais c'est plutôt rare.

+0

Est-ce que Java est vraiment intelligent? Je pensais que c'était une conséquence de Windows permettant/comme un séparateur de fichiers ainsi que \. –

+0

Aucune idée - J'ai toujours pensé que c'était Java mais il est possible que ce soit les appels de l'API Windows eux-mêmes. Ajusté juste au cas où. – paxdiablo

+0

Heh, j'adore comment les gens travaillent généreusement pour increser mon représentant! Merci Pax d'avoir amélioré la réponse! :-) –

4

peut-être pas une réponse directe à votre question, mais je pense que ce devrait souligner:

Il y a un system-dependent default name-separator character.

+0

Donc, il y en a, mais comme Vinko l'a souligné, vous n'avez pas vraiment besoin de vous soucier de cette propriété; les barres obliques fonctionnent très bien. –

3

La façon vraiment indépendant du système est de le faire:

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

Il vous donnera "E: \ dev_workspace1 \ AccessCore \ WebRoot \ DataFile" sous Windows et « E:/dev_workspace1/AccessCore/WebRoot/DataFile " à peu près partout ailleurs.

+0

Pourquoi le remplacement? Le '/' fonctionne toujours sur Java et est automatiquement converti en séparateur-char dépendant du système. – Mnementh

+0

Puisqu'il est vraiment, vraiment, vraiment très sûr d'utiliser cette chaîne. Vous pouvez même le passer en paramètre pour dire un obscur programme de ligne de commande de l'ère DOS sur Windows ou le nourrir à des appels WinAPI vraiment anciens ou tout ce qui ne peut pas gérer les barres obliques comme séparateur. –

+0

Wrap vous remplacez un if (File.seperatorChar! = '/') Comme une optimisation pour les plates-formes unix. – KitsuneYMG

1

Si vous écrivez un chemin, vous devez utiliser le '/' comme chemin-séparateur sous Java. Le '/' est le séparateur de chemin officiel sous Java et sera converti en séparateur approprié pour la plate-forme (\ sous windows,/sous unix). Le reste de la chaîne est inchangé s'il est transmis au système, ainsi le '\' fonctionne également sous Windows. Mais la façon correcte de représenter ce chemin est "E:/dev_workspace1/AccessCore/WebRoot/DataFile".

Si vous voulez représenter un '\' dans une chaîne Java, vous devez lui échapper avec un autre: "Cette chaîne contient un \".

Questions connexes