2012-02-21 18 views
6
logpath = LoggerUtils.getProperties().getProperty("log.path"); 
System.out.println("logpath: " + logpath); 

Las anteriores declaraciones de código:propiedades Java, consiguiendo ruta del archivo

logpath: C:UsersMauriceDesktopLogs 

En el archivo de propiedades es:

log.path C:\Users\Maurice\Desktop\Logs 

¿Cómo se conservan los separadores de archivos? Quiero que esto también funcione en Linux y no solo en Windows.

Respuesta

14

En realidad, tiene que poner esto en el archivo de propiedades:

log.path C:\\Users\\Maurice\\Desktop\\Logs 

ver esto:

con mayor precisión el load método:

desplazarse un poco y verá esto entre otras cosas:

El método no trata a una barra invertida, \, antes de que un carácter de escape no válida como una error; la barra invertida se cae silenciosamente. Por ejemplo, en una cadena de Java, la secuencia "\ z" causaría un error de tiempo de compilación. En contraste, este método silenciosamente deja caer la barra invertida. Por lo tanto, este método trata la secuencia de dos caracteres "\ b" como equivalente al carácter único 'b'.

La barra diagonal inversa \ es un carácter de escape que, en caso contrario, se cae.

+0

Gracias. ¿Necesita escapar también para Linux? – Maurice

+0

Sí, pero le sugiero que use barras diagonales regulares ('/') todo el tiempo; esto también funcionará en Windows: 'log.path C:/Users/Maurice/Desktop/Logs' –

+0

Ah ok, funciona, gracias mucho. – Maurice

4

En un archivo de propiedades, es necesario o bien utilizar barras diagonales:

C:/Users/Maurice/Desktop/Logs 

O, escapó barras invertidas:

C:\\Users\\Maurice\\Desktop\\Logs 
2

El Java properties file format dicta que la barra invertida ("\") Escapes el personaje que lo sigue, así que para obtener un camino de Windows literal debe tener:

logpath: C:\\Users\\Maurice\\Desktop\\Logs 

Sin embargo, Java convertir los caracteres separador de ruta de forma automática para adaptarse a la plataforma de ejecución, lo que puede evitar esta molestia utilizando siempre barras:

logpath: C:/Users/Maurice/Desktop/Logs 
0

puede almacenar el Properties para presentar primera, a continuación, cárgalo nuevamente para usar. Properties se ocupará de escapar/desapapelar cualquier cosa.

Cuestiones relacionadas