2009-07-23 30 views

Respuesta

20

Desafortunadamente, no existe un operador de escape de cadena completa en Java. Usted tiene que escribir el código como:

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

Hay toda ningún operador de escape de cadenas, pero, si es para el acceso a archivos, puede utilizar una barra inclinada:

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

Windows allows tanto hacia delante como barras inclinadas como un separador de ruta. No funcionará si pasas el camino a un programa externo que falla y falla, pero eso es bastante raro.

+0

¿De verdad es Java lo que está siendo inteligente? Pensé que esto era una consecuencia de que Windows permitiera/como separador de archivos, así como \. –

+0

No tengo idea, siempre pensé que era Java, pero es posible que sean las llamadas a la API de Windows. Ajustado por si acaso. – paxdiablo

+0

¡Heh, me encanta cómo la gente trabaja generosamente para aumentar mi reputación! Gracias Pax por mejorar la respuesta! :-) –

4

Puede que no sea una respuesta directa a su pregunta, pero me siento esto debe señalarse:

Hay una system-dependent default name-separator character.

+0

. Así es, pero como lo señaló Vinko, realmente no necesita preocuparse por esa propiedad; barras diagonales funcionan bien. –

3

La forma realmente independiente del sistema es hacer esto:

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

Se le dará "E: \ dev_workspace1 \ AccessCore \ WebRoot \ DataFile" en Windows y "E:/dev_workspace1/AccessCore/WebRoot/DataFile " casi en cualquier otro lado.

+0

¿Por qué la sustitución? El '/' funciona siempre en Java y se convierte automáticamente en el separador-char dependiente del sistema. – Mnementh

+0

Porque entonces es realmente, realmente, seguro usar esta cadena. Incluso puede pasarlo como parámetro, digamos un oscuro programa de línea de comandos de DOS en Windows o alimentarlo a llamadas WinAPI realmente antiguas o lo que sea que no pueda manejar barras como separador. –

+0

Wrap you replace es un if (File.seperatorChar! = '/') Como una optimización para plataformas Unix. – KitsuneYMG

1

Si escribe una ruta, debe usar '/' como separador de ruta en Java. El '/' es el separador de ruta oficial en Java y se convertirá en el separador apropiado para la plataforma (\ en windows,/bajo Unix). El resto de la cadena no cambia si se pasa al sistema, por lo que el '\' también funciona bajo Windows. Pero la forma correcta de representar esta ruta es "E:/dev_workspace1/AccessCore/WebRoot/DataFile".

Si desea representar una '\' en una cadena de Java, tiene que escapar con otra: "Esta cadena contiene un \".

Cuestiones relacionadas