Se presentan tres maneras diferentes de acceder a un fichero de propiedades en Java. Los ficheros de propiedades son ficheros de texto plano que pueden servir para almacenar información configurable o frecuentemente editable sin necesidad de recompilar o generar una nueva aplicación. Suelen tener la terminación .properties.
El contenido de los ficheros se representa en forma de pares ‘nombre’/'valor’. Cada línea se corresponde con una propiedad diferente:
1 2 3 4 5 |
# Esto es un comentario propiedad1=Esto es una propiedad propiedad2=Esto es otra propiedad propiedad3=Y propiedad en \ varias lineas |
Para acceder a un fichero de propiedades se usa la clase Properties de Java. A esta clase se le pasa el descriptor del fichero de propiedades que previamente se ha abierto, de tal manera que se puedan cargar los pares de ‘nombre’/'valor’ que contiene. Existen varias maneras de acceder a este fichero, de ahí las siguientes variantes:
1. Fichero de propiedades en disco
En este caso, se accede al fichero de propiedades indicando la ruta de sistema del mismo, bien respecto al lugar desde el que se está ejecutando la aplicación o bien una ruta absoluta.
1 2 3 4 |
Properties props = new Properties(); FileInputStream fis = new FileInputStream("recursos.properties"); props.load(fis); fis.close(); |
El fichero ‘recursos.properties’ estaría en el mismo lugar desde el que se ejecuta la aplicación.
2. Fichero de propiedades en el classpath de la aplicación
Si el fichero de propiedades se encuentra en el classpath de nuestra aplicación, bien sea esta una aplicación de escritorio o una aplicación web, se puede usar este entorno para acceder al mismo.
1 2 3 4 |
Properties props = new Properties(); InputStream is = MiClase.class.getClassLoader().getResourceAsStream("/config/recursos.properties"); props.load(is); is.close(); |
El fichero ‘recursos.properties’ estaría dentro del directorio ‘config’, que a su vez estará en el classpath de la aplicación. Si es una aplicación web, puede estar dentro de WEB-INF/classes, por ejemplo.
3. Usando el contexto en una aplicación web
1 2 3 4 5 6 7 8 |
public void init(ServletConfig config) throws ServletException { ... Properties props = new Properties(); InputStream is = config.getServletContext().getResourceAsStream("/WEB-INF/config/recursos.properties"); props.load(is); is.close(); ... } |
En este caso, el fichero de propiedades esta dentro de la aplicación web, en la ruta WEB-INF/config.