La extensión .properties se utiliza principalmente en tecnologías relacionadas con Java para almacenar los parámetros configurables de una aplicación . También se puede usar para almacenar cadenas de texto para la internacionalización y la localización ; estos se conocen como paquetes de recursos de propiedades (Property Resource Bundles ) .
Cada parámetro se almacena como un par de cadenas de texto : una almacena el nombre del parámetro (denominada clave ) y la otra, el valor.
A diferencia de muchos formatos de archivo populares, no existe un RFC para los archivos .properties y los documentos de especificación no siempre son claros, muy probablemente debido a la simplicidad del formato.
Formato
Cada línea en un archivo .properties normalmente almacena una sola propiedad. Son posibles varios formatos para cada línea, incluyendo key=value, key = value, key:value, y . Las comillas simples o dobles se consideran parte de la cadena. El espacio final es significativo y se presume que se recorta según lo requiera el consumidor.key value
Las líneas de comentario en los archivos .properties se indican con el signo de número (#) o el signo de exclamación (!) como primer carácter no en blanco , ignorando el resto del texto de esa línea. La barra invertida se utiliza para escapar un carácter. A continuación se muestra un ejemplo de un archivo de propiedades.
# Estás leyendo un comentario en el archivo ".properties".¡El signo de exclamación ('!') también se puede usar para comentarios.# Los comentarios son ignorados.# Las líneas en blanco también se ignoran.# Las líneas con "propiedades" contienen una clave y un valor separados por un carácter delimitador.# Hay 3 caracteres delimitadores: igual ('='), dos puntos (':') y espacio en blanco (' ', '\t' y '\f').sitio web = https://en.wikipedia.org/idioma : inglésarchivos .properties del tema# Una palabra en una línea simplemente creará una clave sin valor.vacío# Los espacios en blanco que aparecen entre la clave, el delimitador y el valor se ignoran.# Esto significa que los siguientes son equivalentes (excepto por cuestiones de legibilidad).hola = holahola = hola# Para comenzar el valor con un espacio en blanco, escápelo con una barra invertida ('\').whitespaceStart = \ <-Este espacio no se ignora.# Las claves con el mismo nombre serán sobrescritas por la clave que se encuentre más alejada en el archivo.# Por ejemplo, el valor final para "duplicateKey" será "second".duplicateKey = primeroduplicateKey = segundo# Para usar los caracteres delimitadores dentro de una clave, debe escaparlos con una ('\').# Sin embargo, no es necesario hacer esto en el valor.delimiterCharacters \:\=\ = Este es el valor para la clave "delimiterCharacters \:\=\ "# Agregar una barra invertida ('\') al final de una línea significa que el valor continúa en la siguiente línea.multilínea = Esta líneacontinúa# Si quieres que tu valor incluya una barra invertida ('\'), debes escaparla con otra barra invertida ('\').ruta = c: \\ wiki \\ plantillas# Esto significa que si el número de barras invertidas ('\') al final de la línea es par, la siguiente línea no se incluye en el valor.# En el siguiente ejemplo, el valor de "evenKey" es "Esto está en una línea\".evenKey = Esto está en una línea \\# Esta línea es un comentario normal y no está incluida en el valor de "evenKey".# Si el número de barras invertidas ('\') es impar, entonces la siguiente línea se incluye en el valor.# En el siguiente ejemplo, el valor de "oddKey" es "Esta es la línea uno y\# Esta es la línea dos".oddKey = Esta es la línea uno y \\\# Esta es la línea dos# Se eliminan los caracteres de espacio en blanco al principio de una línea.# Asegúrate de agregar los espacios que necesitas antes de la barra invertida ('\') en la primera línea.# Si los agregas al principio de la siguiente línea, se eliminarán.# En el siguiente ejemplo, el valor de "welcome" es "¡Bienvenido a Wikipedia!".bienvenido = Bienvenido a \¡Wikipedia!# Si necesita agregar saltos de línea y retornos de carro, debe escaparlos usando ('\n') y ('\r') respectivamente.# También puede escapar opcionalmente las tabulaciones con ('\t') para fines de legibilidad.valueWithEscapes = Esto es un salto de línea \n y un retorno de carro \r y una tabulación \t .# También puede utilizar caracteres de escape Unicode (máximo de cuatro dígitos hexadecimales).# En el siguiente ejemplo, el valor de "encodedHelloInJapanese" es "こんにちは".encodedHelloInJapanese = \u 3053 \u 3093 \u 306b \u 3061 \u 306f# Pero con codificaciones de archivos más modernas como UTF-8, puedes usar directamente los caracteres compatibles.hola en japonés =こんにちはEn el ejemplo anterior:
- El signo de número (#) y el signo de exclamación (!) al principio de una línea ( línea 1 , 2 , etc.) marcan el texto como comentarios y los comentarios se ignoran,
- Una línea vacía ( línea 5 ) también se ignora,
- " sitio web " ( línea 8 ) sería una clave, y su valor correspondiente sería " https://en.wikipedia.org/ ",
- Se excluye todo el espacio en blanco al principio de la línea 44. Esto significa que la clave " welcome " ( línea 43 ) tiene el valor " Welcome to Wikipedia! " y no " Welcome to Wikipedia !".
Antes de Java 9, la codificación de un archivo .properties era ISO-8859-1 , también conocido como Latin-1. Todos los caracteres que no fueran ASCII debían introducirse utilizando caracteres de escape Unicode , por ejemplo, \uHHHH, donde HHHH es un índice hexadecimal del carácter en el conjunto de caracteres Unicode. Esto permite utilizar archivos .properties como paquetes de recursos para la localización . Un archivo de texto que no sea Latin-1 puede convertirse a un archivo .properties correcto utilizando la herramienta native2ascii que se incluye con el JDK o utilizando una herramienta, como po2prop, [ 1 ] que gestiona la transformación de un formato de localización bilingüe a un formato de escape .properties.
Una alternativa al uso de caracteres de escape Unicode para caracteres que no sean Latin-1 en archivos *.properties de Java codificados en caracteres ISO 8859-1 es utilizar el formato de archivo XML Properties del JDK, que por defecto está codificado en UTF-8 , introducido a partir de Java 1.5. [ 2 ]
Otra alternativa es crear un control personalizado que proporcione una codificación personalizada. [ 3 ]
En Java 9 y versiones posteriores, la codificación predeterminada específicamente para los paquetes de recursos de propiedades es UTF-8, y si se encuentra una secuencia de bytes UTF-8 no válida, se recurre a ISO-8859-1. [ 4 ] [ 5 ]
Edición
La edición de archivos .properties se realiza utilizando cualquier editor de texto , como los que suelen estar instalados en varios sistemas operativos, incluyendo el Bloc de notas en Windows o Emacs , Vim , etc. en sistemas Linux.
También hay disponibles herramientas de terceros con funcionalidades adicionales específicas para la edición de archivos .properties, tales como:
- Validación de datos
- Creación de nuevas claves
- Sincronización de nombres de claves
- Conversión bidireccional automática de símbolos no ASCII para admitir idiomas no latinos .
- Integración con Eclipse
Usos y excepciones que no son de Java
Apache Flex también utiliza archivos .properties, pero aquí están codificados en UTF-8. [ 6 ]
En el formato uriworkermap.properties de Apache mod_jk , un signo de exclamación ("!") denota un operador de negación cuando se usa como el primer carácter no en blanco en una línea. [ 7 ]
Perl CPAN contiene Config::Properties para interactuar con un archivo .properties. [ 8 ]
SAP utiliza archivos .properties para la localización dentro de su marco SAPUI5 y su variante de código abierto OpenUI5 [ 9 ].
Hay muchas opciones de Node.js (JavaScript/TypeScript) disponibles en el gestor de paquetes de Npm . [ 10 ]
PHP también tiene muchas opciones de paquetes disponibles. [ 11 ]
Véase también
- Algunos utilizan XML , JSON y YAML para formatos de configuración más complejos.
Referencias
- ↑ La función po2prop de Translate Toolkit convierte las codificaciones de caracteres nativas en un archivo PO de Gettext en ASCII correctamente escapado sin necesidad de native2ascii.
- ↑ DTD de propiedades XML de Java
- ↑ "java - Cómo usar UTF-8 en propiedades de recursos con ResourceBundle" . Stack Overflow . Archivado del original el 17 de marzo de 2015. Consultado el 28 de enero de 2015 .
- ↑ "Mejoras de internacionalización en JDK 9" . Centro de ayuda de Oracle . Consultado el 5 de enero de 2018 .
- ↑ "JEP 226: UTF-8 Property Resource Bundles" . OpenJDK . Consultado el 3 de septiembre de 2020 .
- ↑ "IResourceBundle" . Referencia de la API de Adobe ActionScript 3 (AS3 Flex) .
- ↑ "Configuración de uriworkermap.properties" . La guía de referencia de los conectores de Apache Tomcat .
- ↑ "Config::Properties - Leer y escribir archivos de propiedades" . metacpan.org .
- ↑ "SAPUI5 SDK - Kit de demostración" . sapui5.hana.ondemand.com . Consultado el 14 de mayo de 2019 .
- ↑ "palabras clave:propiedades java parse - búsqueda npm" . www.npmjs.com . Consultado el 22 de marzo de 2022 .
- ↑ "Packagist" . packagist.org . Consultado el 22 de marzo de 2022 .
Enlaces externos
java.util.Properties.load(java.io.Reader)- Proporciona la semántica precisa de los archivos de propiedades Java bien formados.java.util.PropertyResourceBundle- describe los paquetes de recursos de propiedadesjava.util.Properties- Explica las propiedades de Java en un formato XML sencillo.- MultiProperties es un complemento de Eclipse para editar varios archivos clave-valor con contenido similar. Este tipo de formato de archivo puede ser, por ejemplo, Propiedades en el lenguaje de programación Java, que se utiliza frecuentemente para respaldar un ResourceBundle.
- Bracket Properties : una actualización del concepto de Propiedades que mantiene intacto el formato de archivo .properties, omnipresente en la actualidad.
- Editor de propiedades de Java (aplicación + complemento de Eclipse) : una utilidad práctica para ver y editar archivos de propiedades en todo un proyecto.
- Complemento DOKSoft Properties Editor para Eclipse Archivado el 28/07/2014 en Wayback Machine : herramienta i18n para instalar en el IDE Eclipse.
- Editor de mensajes : gestiona la internacionalización (i18n) para aplicaciones Java. Genera archivos de propiedades XML. Incluye dos hojas de estilo para la generación de propiedades .properties y .xml en tiempo de compilación (basado en Ant).
- JLokalize : editor de propiedades Java de código abierto con función de inversión y corrector ortográfico.
- Configuración::Propiedades - Perl CPAN.
- El módulo Jackson Properties es una biblioteca que permite mapear el contenido de los archivos Properties a objetos Java y viceversa, de forma similar a como se mapean habitualmente XML y JSON.
- SAPUI5 - Uso de textos localizados en aplicaciones
- formatos de archivos informáticos
- Archivos de configuración
- Java (lenguaje de programación)
- extensiones de nombre de archivo