2011-05-19 11 views
8

cuando actualicé el archivo de propiedades, los comentarios también se actualizan a lo largo de los datos. Hay alguna forma posible de eliminar los comentarios o actualizar los datos sin comentarios.Eliminar comentarios en el archivo de propiedades java

Aquí pongo al día el archivo de 4 veces cada vez que el sello de fecha y hora anexar como un comentario

#Thu May 19 17:53:42 GMT+05:30 2011 
Key_1=DSA_1024 
#Thu May 19 17:53:43 GMT+05:30 2011 
Key_2=DSA_1024 
#Thu May 19 17:53:43 GMT+05:30 2011 
Key_3=DSA_1024 
#Thu May 19 17:53:44 GMT+05:30 2011 
Key_4=DSA_1024 

código

Properties prop=new Properties(); 
      String currentDirectary=System.getProperty("user.dir"); 
      String path=currentDirectary+"/Resource/Key.Properties"; 
      FileOutputStream out=new FileOutputStream(path,true); 
      prop.setProperty("keyName","DSA_1024"); 
      prop.store(out, null); 
+1

¿Quién agregó estos comentarios? ¿Qué herramienta estás usando? – Bozho

+2

Muéstranos algunas líneas de código que * actualicen * el archivo de propiedades –

+4

Parece que usaste 'Properties.store()' para ** agregar ** a un archivo existente, así no es como debe ser usado. Debería agregar todas las propiedades deseadas al objeto ** one ** 'Properties' y llamar a' store() 'en ese * una vez *. –

Respuesta

1

De los JavaDocs para properties.store()

Si el argumento de comentarios no es nulo, primero se escribe un carácter ASCII #, la cadena de comentarios y un separador de línea en la salida corriente Por lo tanto, los comentarios pueden servir como un comentario de identificación.

A continuación, siempre se escribe una línea de comentario, que consta de un carácter ASCII #, la fecha y hora actuales (como si el método toString de Date para la hora actual lo produce) y un separador de líneas generado por Writer .

La única opción que puedo pensar sería escribir su propia implementación de OutputStream para soltar los comentarios. (O simplemente aprende a vivir con ellos :))

2

Una vez tuve que hacer esto porque un consumidor del archivo de propiedades no podía manejar las propiedades. El comentario producido por el método store está bien definida, por lo que es bastante fácil de saltar sobre ella:

Writer stringOut = new StringWriter(); 
properties.store(stringOut, null); 
String string = stringOut.toString(); 
String sep = System.getProperty("line.separator"); 
out.write(string.substring(string.indexOf(sep) + sep.length())); 
1

Aquí es una mejora de la corte por encima del cual utiliza la codificación correcta también.

FileOutputStream out = new FileOutputStream(filename); 
ByteArrayOutputStream arrayOut = new ByteArrayOutputStream(); 
props.store(arrayOut, null); 
String string = new String(arrayOut.toByteArray(), "8859_1"); 
String sep = System.getProperty("line.separator"); 
String content = string.substring(string.indexOf(sep) + sep.length()); 
out.write(content.getBytes("8859_1")); 
0

En groovy Escribí esto para eliminar por completo los comentarios de las Propiedades.

String writeProperties(Properties properties) { 
    def writer = new StringWriter() 
    properties.each { k, v -> 
     writer.write("${k}=${v}${System.lineSeparator()}") 
    } 
    writer.toString() 
} 

Esto debería ser fácil de convertir a java normal.

Cuestiones relacionadas