2010-03-09 11 views

Respuesta

65

Por otra parte, por favor refiérase a load(Reader reader) method from Property class on javadoc

En load(Reader reader) documentación del método que dice

La clave contiene todos los caracteres en la línea de salida con el primer carácter de espacio no blanca y hasta a, pero sin incluir, el primer sin esculpir '=', ':', o el carácter de espacio en blanco que no sea un terminador de línea. Todos estos caracteres de terminación de clave pueden incluirse en la clave escapándolos de con una barra diagonal anterior caracteres; por ejemplo,

\:\= 

sería la clave ":=". caracteres terminador de línea de dos caracteres pueden ser incluidos mediante \r y \n de escape secuencias. Cualquier espacio en blanco después de la clave se omite; si el primer carácter de espacio no blanco después de la clave es '=' o ':', entonces se ignora y cualquier caracteres de espacio en blanco después de también se salta. Todos los caracteres restantes en la línea se vuelven parte de la cadena de elementos asociados ; si hay no hay caracteres restantes, el elemento es la cadena vacía "". Una vez que las secuencias de caracteres sin formato que constituyen la clave y el elemento son identificados, el proceso de escape es realizado como se describe anteriormente.

Espero que ayude.

20

El carácter de escape predeterminado en Java es '\'.
Sin embargo, el archivo de propiedades de Java tiene formato clave = valor, debe considerar todo después de que el primero sea igual a valor.

+5

excepto espacios en blanco iniciales (oh y el '=' entre la clave y el valor no es necesario, podría ser: o un espacio en blanco) –

1

Usted puede mirar aquí Can the key in a Java property include a blank character?

para el escape igual '=' \ u003d

table.whereclause = donde id = 100

clave: [table.whereclause] Valor: [donde id = 100]

table.whereclause \ u003dwhere id = 100

clave: [table.whereclause = donde] valor: [id = 100]

table.whereclause \ u003dwhere \ u0020id \ u003d100

clave: [table.whereclause = where id = 100] value: []

58

En su ejemplo específico, no necesita escapar de los iguales, solo necesita escapar si es parte de la clave. El formato de archivo de propiedades tratará a todos los caracteres después de que los primeros iguales no escamados formen parte del valor.

+10

¡No sé por qué esto no se ha marcado! ¡Respuesta correcta más simple! ¡Y la mayoría de las veces las personas buscan escaparse del valor en el archivo de propiedades! – Tejas

+1

Corrección pequeña: tratará como valor a todos los caracteres después de los primeros espacios pares y sin eslabones, es decir, se eliminan los espacios iniciales * en el valor *. El ejemplo "myKey = my value" es igual que "myKey = my value". –

11

La mejor manera de evitar este tipo de problemas es crear propiedades programáticamente y luego almacenarlas. Por ejemplo, con un código como este:

java.util.Properties props = new java.util.Properties(); 
props.setProperty("table.whereclause", "where id=100"); 
props.store(System.out, null); 

Esto daría salida a System.out la versión escapada correctamente.

En mi caso, la salida fue:

#Mon Aug 12 13:50:56 EEST 2013 
table.whereclause=where id\=100 

Como se puede ver, esta es una manera fácil de generar el contenido de los archivos .properties que se garantiza que sea correcta. Y puedes poner tantas propiedades como quieras.

4

En mi caso, dos '\' me funcionaron bien para mí.

Por ejemplo: si su palabra contiene el carácter '#' (por ejemplo aa # 100, puede escapar de ella con dos líder '\\'

key= aa\\#100

+0

En segundo lugar, necesitas dos barras invertidas (glassfish 4.1, compilación 13) – Susanta

-2

I' he podido ingresar valores dentro del carácter ":

db_user="postgresql" 
db_passwd="this,is,my,password" 
+0

¿Por qué declinar? Es una respuesta real :) – russellhoff

Cuestiones relacionadas