propiedades open leer fuera externo datos configuracion conexion archivos archivo java properties-file

java - open - Cargando mĂșltiples archivos de propiedades



leer properties externo java (6)

Actualmente, si. Puedes hacerlo. Si alguna de las propiedades se superpone, la nueva propiedad cargada tendrá lugar de la anterior.

¿Es posible apilar propiedades cargadas en Java? Por ejemplo puedo hacer:

Properties properties = new Properties(); properties.load(new FileInputStream("file1.properties")); properties.load(new FileInputStream("file2.properties"));

y acceder a las propiedades de ambos?


Esto también debería funcionar. Si se define la misma propiedad en file1.properties y file2.properties, la propiedad en file2.properties entrará en vigencia.

Properties properties = new Properties(); properties.load(new FileInputStream("file1.properties")); properties.load(new FileInputStream("file2.properties"));

Ahora el mapa de propiedades tendrá propiedades de ambos archivos. Si aparece la misma clave en archivo1 y archivo2, el valor de la clave de archivo1 se actualizará en propiedades con valor en archivo2 ya que estoy llamando archivo1 y luego archivo2.


Puede hacer esto un poco más dinámico, trabajando con un número indeterminado de archivos.

El parámetro para este método debe ser una lista con la ruta al archivo de propiedades. Hice el método estático, lo puse en una clase con otras funciones relacionadas con el manejo de mensajes y simplemente lo llamé cuando lo necesito:

public static Properties loadPropertiesFiles(LinkedList<String> files) { try { Properties properties = new Properties(); for(String f:files) { Resource resource = new ClassPathResource( f ); Properties tempProp = PropertiesLoaderUtils.loadProperties(resource); properties.putAll(tempProp); } return properties; } catch(IOException ioe) { return new Properties(); } }


Puedes hacerlo:

Properties properties = new Properties(); properties.load(new FileInputStream("file1.properties")); Properties properties2 = new Properties(); properties2.load(new FileInputStream("file2.properties")); properties.putAll(properties2);

NOTA: Todas las claves mantenidas son únicas. Por lo tanto, las propiedades posteriores cargadas con la misma clave se anularán. Sólo para guardar para su referencia :)


Sí, debe pasar el archivo de propiedades predeterminado en el constructor. Así puedes encadenarlos.

P.ej:

Properties properties1 = new Properties(); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("file1.properties"))){ properties1.load(bis); } Properties properties2 = new Properties(properties1); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("file2.properties"))){ properties2.load(bis); }


Sí, la pila de propiedades. Properties amplían Hashtable y load() simplemente llaman a put() en cada par clave-valor.

Código relevante de la Source :

String key = loadConvert(lr.lineBuf, 0, keyLen, convtBuf); String value = loadConvert(lr.lineBuf, valueStart, limit - valueStart, convtBuf); put(key, value);

En otras palabras, la carga desde un archivo no borra las entradas actuales. Sin embargo, tenga en cuenta que si los dos archivos contienen entradas con la misma clave, el primero se sobrescribirá.