Cuando escribimos programas, algunos parámetros a menudo cambian, pero este cambio no es lo que predecimos. Por ejemplo, hemos desarrollado un módulo que opera la base de datos. Durante el desarrollo, nos conectamos a la base de datos local y la IP, el nombre de la base de datos, el nombre de la tabla, el host de la base de datos y otra información son locales. Para hacer el módulo que opera los datos universales, la información anterior no se puede escribir en el programa. Por lo general, nuestro enfoque es usar archivos de configuración para resolverlo.
Varios idiomas tienen sus propios tipos de archivos de configuración compatibles. Por ejemplo, Python, admite archivos .ini. Debido a que tiene una clase configParser en el interior para admitir la lectura y la escritura de archivos .ini, los programadores pueden operar libremente los archivos .ini de acuerdo con los métodos proporcionados por esta clase. En Java, Java admite la lectura y la escritura de archivos .properties. La clase incorporada Java.util.Properties of JDK nos proporciona conveniencia en los archivos .Properties operativos.
uno. formulario de archivo .properties
# La siguiente es la información del servidor y la base de datos dbport = localhost dataBASEname = mydb dbusername = root dbpassword = root # La siguiente es la información de la tabla de la base de datos dbtable = mytable # La siguiente es la información del servidor ip = 192.168.0.9.9
En el archivo anterior, suponemos que el nombre del archivo es: archivo test.properties. El primer comportamiento de # comenta la información; En el lado izquierdo del signo igual "=" lo llamamos clave; En el lado derecho del signo igual "=" lo llamamos valor. (De hecho, es lo que a menudo llamamos pares de valores clave) La clave debe ser una variable en nuestro programa. Y el valor se configura de acuerdo con la situación real.
dos. Clase de propiedades en JDK
La clase de propiedades existe en la celda java.util, que hereda de hashtable, y proporciona varios métodos principales:
1. GetProperty (clave de cadena), busque propiedades en esta lista de propiedades con la clave especificada. Es decir, a través de la clave de parámetro, obtenemos el valor correspondiente a la clave.
2. Cargar (InputStream InSteam), lee la lista de atributos (clave y par de elementos) de la secuencia de entrada. Obtenga todos los pares de valor clave en el archivo cargando el archivo especificado (como el archivo test.properties anterior). Para GetProperty (clave de cadena) para buscar.
3. SetProperty (clave de cadena, valor de cadena), llamar al método hashtable. Establece el par de valores de valor de valor llamando al método PUT de la clase base.
4. Almacene (OutputStream Out, String Comments), escribe la lista de propiedades (clave y par de elementos) en esta tabla Propiedades a la secuencia de salida en un formato adecuado para cargar en la tabla de propiedades utilizando el método de carga. En contraste con el método de carga, este método escribe pares de valor clave en el archivo especificado.
5. Clear (), Borre todos los pares de valor clave cargados. Este método se proporciona en la clase base.
Con los métodos anteriores, podemos operar en el archivo .properties!
3. Ejemplo del archivo de propiedades de lectura de Java
Hay un archivo de archivo de propiedades.
Color = redname = boxLength = 18Width = 7Heigth = 8
Para obtener el valor del atributo, puede usar el siguiente código:
InputStream in = null; Propiedades p = nuevas propiedades (); try {in = new BufferedInputStream (new FileInputStream ("Box.Properties")); P.Load (in);} Catch (FileNotFoundException e) {// TODO Bloque de captura generada automáticamente E.PrintStackTrace ();} Catch (ioexception e) {// TODO Bloque de captura generada automáticamente E.PrintStackTrace ();} Enumeration <Object> Keys = P.Keys (); while (keys.hasmoreelements ()) {string key = (string) keys.nextelement (); System.out.println (Key + ":" + P.getProperty (Key));}o:
InputStream in; resourceBundle rb = null; try {in = new BufferedInputStream (new FileInputStream ("Box.Properties")); rb = new PropertyResourceBundle (in);} catch (FileNotFoundException e1) {// TODO Bloque de captura automática e1.printStackTrace ();} Catch (IOException e) {// toDO Auto Generated Bloque E.PrintStackTrace ();} if (RB! = NULL) {Enumeration> rb.getKeys (); while (keys.hasmoreelements ()) {string key = (string) keys.nextelement (); System.out.println (clave + ":" + rb.getString (key)); }}Sin embargo, el orden de salida es diferente del archivo original.