2011-08-08 12 views
44

He leído sobre propiedades y paquete de recursos. Pero no pude obtener la diferencia entre estos. Cuándo usar el archivo de propiedades y cuándo usar el paquete de recursos.Propiedades vs Paquete de recursos

Para cargar archivo de propiedades utilizar el siguiente código

Properties tempProp = new Properties(); 
FileInputStream propsFile = new FileInputStream(xyz.properties); 
tempProp.load(propsFile); 

Para cargar paquete de recursos

ResourceBundle labels = 
    ResourceBundle.getBundle("xyz", currentLocale); 
Enumeration bundleKeys = labels.getKeys(); 

En ambos de los casos (en paquete de recursos y en Properites) que estamos utilizando archivo de propiedades. La única diferencia que encontré es que para almacenar datos específicos de la aplicación usamos el archivo de propiedades y para usar los datos de i18n usamos el paquete de recursos. No sé si estoy en lo cierto o no.

Me gustaría saber el uso de los dos anteriores. Cuál es la diferencia entre estos dos.

+2

Estás 100% en lo cierto. Los objetos ResourceBundle contienen objetos específicos de la configuración regional. – adatapost

Respuesta

39

Sí, estás pensando en la línea correcta.

Los paquetes de recursos no tienen para usar archivos de propiedades; es solo una implementación (PropertyResourceBundle). Un archivo de propiedades es realmente una asignación de cadena a cadena, y puede usarse para i18n, pero no tiene que ser así.

ResourceBundle le ofrece una forma coherente de solicitar el objeto apropiado (generalmente una cadena) para una configuración regional particular, con retrocesos, etc. A menudo, pero no siempre, está respaldado por un archivo de propiedad separado para cada idioma.

Así que sí: si se trata de i18n, debe usar ResourceBundle; si solo necesita un mapa de cadena a cadena persistido en un archivo de texto, está bien usar Properties directamente.

+0

¿está bien usar solo un ResourceBundle para obtener propiedades? –

+1

@ChristianVielma: No está claro a qué te refieres. Si no busca recursos localizados, ResourceBundle no es realmente apropiado. –

+0

@Jon_Skeet gracias por su respuesta rápida, decidí explicarme un poco más: http://stackoverflow.com/questions/14883000/why-not-use-resourcebundle-instead-of-properties –

6

ResourceBundle ayuda a cargar las propiedades específicas de la configuración regional. Si tiene un archivo de propiedades diferente para cada configuración regional, por ejemplo, DE, CN, etc. ResourceBundle cargará el archivo específico de configuración regional correspondiente.

Cuestiones relacionadas