Tengo una lista de pares clave / valor de valores de configuración que quiero almacenar como archivos de propiedades Java, y luego cargar e iterar.
Preguntas:
- ¿Necesito almacenar el archivo en el mismo paquete que la clase que los cargará, o hay alguna ubicación específica donde deba colocarse?
- ¿El archivo debe terminar en alguna extensión específica o está
.txt
bien? - ¿Cómo puedo cargar el archivo en el código?
- ¿Y cómo puedo iterar a través de los valores dentro?
java
properties
Haga clic en Upvote
fuente
fuente
null
. Ver Javadocproperties.load(PropertiesReader.class.getResourceAsStream("/properties.properties"));
que es,getResourceAsStream
versusFileInputStream
? ¿pros y contras?Usted puede almacenar el archivo en cualquier lugar que te gusta. Si desea mantenerlo en su archivo jar, querrá usarlo
Class.getResourceAsStream()
oClassLoader.getResourceAsStream()
acceder a él. Si está en el sistema de archivos, es un poco más fácil.Cualquier extensión está bien, aunque .properties es más común en mi experiencia
Cargue el archivo usando
Properties.load
, pasando unaInputStream
o unaStreamReader
si está usando Java 6. (Si está usando Java 6, probablemente usaría UTF-8 y una codificación enReader
lugar de la codificación ISO-8859-1 predeterminada para una secuencia. )Iterar a través de él como lo haría a través de un normal
Hashtable
(que seProperties
deriva de), por ejemplo, usandokeySet()
. Alternativamente, puede usar la enumeración devuelta porpropertyNames()
.fuente
Si coloca el archivo de propiedades en el mismo paquete que la clase Foo, puede cargarlo fácilmente con
Dado que Propiedades extiende Hashtable, puede iterar sobre los valores de la misma manera que lo haría en un Hashtable.
Si utiliza la extensión * .properties, puede obtener soporte para el editor, por ejemplo, Eclipse tiene un editor de archivos de propiedades.
fuente
Hay muchas formas de crear y leer
properties
archivos:.properties
extensión, sin embargo, puede elegir la suya.java.util
el paquete =>Properties
,ListResourceBundle
,ResourceBundle
clases.Properties
ojava.lang.System
clase.ResourceBundle
clase:Properties
clase:fuente
.properties
extensión? ¿Qué tiene de malo la extensión '.txt'? por favor ayúdameEsto carga el archivo de propiedades:
Utilizo para colocar el archivo .properties en un directorio donde tengo todos los archivos de configuración, no lo combino con la clase que accede a él, pero aquí no hay restricciones.
Por el nombre ... Yo uso .properties por el bien de la verbosidad, no creo que debas llamarlo .properties si no quieres.
fuente
Ejemplo:
fuente
Las propiedades se han convertido en legado. Preferencias clase se prefiere Propiedades.
A diferencia de las propiedades que son pares clave-valor basados en cadenas, la
Preferences
clase tiene varios métodos utilizados para obtener y colocar datos primitivos en el almacén de datos de preferencias. Solo podemos usar los siguientes tipos de datos:Para cargar el archivo de propiedades, puede proporcionar una ruta absoluta o usarla
getResourceAsStream()
si el archivo de propiedades está presente en su ruta de clase.archivo xml:
Echa un vistazo a este artículo sobre la tienda de preferencias internas
fuente
En orden:
fuente
2. no extension is necessary
, ¿Pueden proporcionarme alguna referencia para esta declaración? Tengo confusión sobre eso.Por defecto, Java lo abre en el directorio de trabajo de su aplicación (este comportamiento realmente depende del sistema operativo utilizado). Para cargar un archivo, haga:
Como tal, cualquier extensión de archivo se puede utilizar para el archivo de propiedades. Además, el archivo también se puede almacenar en cualquier lugar, siempre que pueda usar a
FileInputStream
.En una nota relacionada, si utiliza un marco moderno, el marco puede proporcionar formas adicionales de abrir un archivo de propiedades. Por ejemplo, Spring proporciona una
ClassPathResource
para cargar un archivo de propiedades utilizando un nombre de paquete desde dentro de un archivo JAR.En cuanto a iterar a través de las propiedades, una vez que se cargan las propiedades, se almacenan en el
java.util.Properties
objeto, que ofrece elpropertyNames()
método.fuente
Leer un archivo de propiedades y cargar su contenido en
Properties
La siguiente es la forma eficiente de iterar sobre un
Properties
fuente
En Java 8 para obtener todas tus propiedades
fuente
1) Es bueno tener su archivo de propiedades en classpath, pero puede colocarlo en cualquier parte del proyecto.
A continuación se muestra cómo cargar el archivo de propiedades de classpath y leer todas las propiedades.
2) Los archivos de propiedades tienen la extensión como .properties
fuente
Aquí hay otra forma de iterar sobre las propiedades:
fuente
He escrito sobre este marco de propiedad para el año pasado. Proporcionará múltiples formas de cargar propiedades, y también las tendrá fuertemente tipadas.
Echa un vistazo a http://sourceforge.net/projects/jhpropertiestyp/
JHPropertiesTyped le dará al desarrollador propiedades fuertemente tipadas. Fácil de integrar en proyectos existentes. Manejado por una gran serie de tipos de propiedades. Da la capacidad de inicializar propiedades de una línea a través de implementaciones de propiedades IO. Le da al desarrollador la capacidad de crear sus propios tipos de propiedad y propiedades io. La demostración web también está disponible, las capturas de pantalla se muestran arriba. También tenga una implementación estándar para un front-end web para administrar propiedades, si elige usarlo.
La documentación completa, tutorial, javadoc, preguntas frecuentes, etc. está disponible en la página web del proyecto.
fuente
Aquí listo clase estática
Aquí muestra:
fuente
Puede cargar el archivo de propiedades demandando de la siguiente manera:
Y luego puedes iterar sobre el mapa usando una expresión lambda como:
fuente
en mi opinión, otras formas están en desuso cuando podemos hacerlo de la manera más simple:
¡Es tan simple pero creo que es la mejor manera! Disfrutar
fuente