Red de conocimiento de abogados - Derecho de sociedades - ¡El rol específico y el uso de la clase Propiedades en la programación Java!

¡El rol específico y el uso de la clase Propiedades en la programación Java!

Si no está familiarizado con la clase java.util.Properties, se utiliza para almacenar pares clave-valor en un archivo, donde la clave y el valor están separados por un signo igual. (Como se muestra en el Listado 1). La clase java.util.Properties recientemente actualizada proporciona ahora una forma más sencilla de cargar y almacenar configuraciones para programas: los métodos loadFromXML(InputStreamis) y storeToXML(OutputStream os, String comment).

La siguiente es una explicación detallada, espero que pueda ser de ayuda para todos.

Listado 1. Ejemplo de un conjunto de propiedades

foo=bar

fu=baz

Después de cargar el Listado 1 en Propiedades objeto, puedes encontrar dos claves (foo y fu) y dos valores (barra de foo y baz de fu). Esta clase admite cadenas Unicode incrustadas con \u, pero lo importante aquí es que cada elemento se trata como una Cadena.

El Listado 2 muestra cómo cargar un archivo de propiedades y enumerar su conjunto actual de claves y valores. Simplemente pase el InputStream del archivo al método load() y cada par clave-valor se agregará a la instancia de Propiedades. Luego use list() para enumerar todas las propiedades o getProperty() para obtener propiedades individuales.

Listado 2. Cargando propiedades

import java.util.*;

import java.io.*

clase pública LoadSample; {

public static void main(String args[]) lanza una excepción {

Propiedades prop = new Properties();

FileInputStream fis =

new FileInputStream("sample.properties");

prop.load(fis);

prop.list(System.out);

System.out.println("\nLa propiedad foo: "

prop.getProperty("foo"));

}

}

La ejecución del programa LoadSample produce el resultado que se muestra en el Listado 3. Tenga en cuenta que el orden de los pares clave-valor en la salida del método list() no es el mismo que su orden en el archivo de entrada. La clase Propiedades almacena un conjunto de pares clave-valor en una tabla hash (en realidad, una subclase Hashtable), por lo que el orden no está garantizado.

Listado 3. Salida de LoadSample

-- propiedades del listado --

fu=baz

foo=bar

La propiedad foo: bar

Archivo de propiedades XML

Nada nuevo aquí. La clase Propiedades siempre funciona así. Sin embargo, lo nuevo es cargar un conjunto de propiedades desde un archivo XML. Su DTD se muestra en el Listado 4.

Listado 4. DTD del atributo

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt;!-- DTD para propiedades --gt;

lt;!Propiedades ELEMENT (¿comentario?, entrada*) gt;

lt;!ATTLIST propiedades versión CDATA #FIXED "1.0"gt;

lt;!ELEMENT comentario (#PCDATA) gt;

lt;!ELEMENT entrada (#PCDATA) gt;

lt;!ATTLIST clave de entrada CDATA # REQUIREDgt;

Si no desea leer detenidamente el DTD XML, déjeme decirle que en realidad significa que envuelto en la etiqueta circundante hay una etiqueta , seguida de cualquier número de Etiquetas ; Etiqueta. Para cada etiqueta de entrada, hay un atributo clave y el contenido ingresado es su valor. El Listado 5 muestra cómo se ve la versión XML del archivo de propiedades del Listado 1.

Listado 5. Versión XML del archivo de propiedades

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt; !DOCTYPE propiedades SISTEMA " /dtd/properties.dtd"gt;

lt;propertiesgt;

lt;commentgt;Hilt;/commentgt;

lt; clave de entrada="foo"gt;barlt;/entrygt;

lt;entry key="fu"gt;bazlt;/entrygt;

lt;/propertiesgt;

Como se muestra en el Listado 6, leer la versión XML del archivo de Propiedades no es diferente a leer el archivo en el formato anterior.

Listado 6. Lectura del archivo de propiedades XML

import java.util.*;

import java.io.*;

public clase LoadSampleXML {

public static void main(String args[]) lanza una excepción {

Propiedades prop = new Properties();

FileInputStream fis =< / p>

new FileInputStream("sampleprops.xml");

prop.loadFromXML(fis);

prop.list(System.out);

System.out.println("\nLa propiedad foo: "

prop.getProperty("foo"));

}

}< / p>

Una nota sobre el enlace de recursos

Si bien la clase java.util.Properties ahora admite archivos de propiedades como archivos XML además de pares clave-valor, desafortunadamente, no existe una opción incorporada ResourceBundle se puede procesar como un archivo XML. Sí, PropertyResourceBundle no usa objetos Propiedades para cargar enlaces, pero el uso del método de carga está codificado en la clase en lugar de usar el método loadFromXML() más nuevo.

La ejecución del programa del Listado 6 produce el mismo resultado que el programa original, como se muestra en el Listado 2.

Guardar atributos XML

Las nuevas Propiedades también tienen la función de almacenar atributos en un archivo de formato XML. Aunque el método store() todavía crea un archivo similar al que se muestra en el Listado 1, ahora puede usar el nuevo método storeToXML() para crear un archivo como el que se muestra en el Listado 5. Simplemente pase un OutputStream y un String para la anotación. El Listado 7 muestra el nuevo método storeToXML().

Listado 7. Almacenamiento de propiedades como archivo XML

import java.util.*;

import java.io.*;

clase pública StoreXML {

public static void main(String args[]) lanza una excepción {

Propiedades prop = new Properties();

prop.setProperty ( "uno-dos", "abróchame el zapato");

prop.setProperty("tres-cuatro", "cierra la puerta");

prop.setProperty(" cinco -seis", "recoger palos");

prop.setProperty("siete-ocho", "enderezarlos");

prop.setProperty("nueve-diez ", "una gallina grande y gorda");

FileOutputStream fos =

new FileOutputStream("rhyme.xml");

prop.storeToXML( fos , "Rhyme");

fos.close();

}

}

Ejecute el programa del Listado 7 para generar El resultado de se muestra en el Listado 8.

Listado 8. Archivo XML almacenado

lt;?xml version="1.0" encoding="UTF-8"?gt;

lt DOCTYPE;! propiedades SISTEMA "/dtd/properties.dtd"gt;

lt;propertiesgt;

lt;commentgt;Rhymelt;/commentgt;

lt;tecla de entrada ="seven-eight"gt;póngalos derechoslt;/entrygt;

lt;entry key="cinco-seis"gt;recoja los paloslt;/entrygt;

lt ; Entry key="nine-ten"gt;una gallina grande y gordalt;/entrygt;

lt;entry key="tres-cuatro"gt;cierra la puertalt;/entrygt;

lt;entry key="one-two"gt;abrócheme el zapato;/entrygt;

lt;/propertiesgt;

Un ejemplo cambiado aquí:

p >

importar java.io.FileInputStream;

importar java.io.IOException;

importar java.io.InputStream;

importar java util. .Properties;

/**

* Implementar lectura de archivos de propiedades

* @author haoxuewu

*/

Prueba de clase pública {

public static void main(String[] args) {

prueba {

inicio largo = System.currentTimeMillis( );

InputStream es = new FileInputStream("conf.properties");

Propiedades p = new Properties();

p.load(is) ;

is.close();

System.out.println("TAMAÑO: " p.size());

System.out.println (" página de inicio: " p.getProperty("página de inicio"));

System.out.println("autor: " p.getProperty("autor"));

System .out .println("escuela: " p.getProperty("escuela"));

long end = System.currentTimeMillis();

System.out.println("Costo: " (fin - inicio));

} captura (IOException ioe) {

} captura (IOException ioe) {

p>

ioe.printStackTrace();

}

}

}

conf.properties

# Archivo de configuración

página de inicio = /haoxuewu

autor = bbflyerwww

escuela = jilinjianzhugongchengxueyuan

Resultado

TAMAÑO: 3

página de inicio: /haoxuewu

autor: bbflyerwww

escuela: jilinjianzhugongchengxueyuan