Eu tenho uma lista de pares chave / valor de valores de configuração que desejo armazenar como arquivos de propriedades Java e, posteriormente, carregar e iterar.
Questões:
- Preciso armazenar o arquivo no mesmo pacote da classe que os carregará ou existe algum local específico em que ele deve ser colocado?
- O arquivo precisa terminar em alguma extensão específica ou está
.txt
OK? - Como posso carregar o arquivo no código
- E como posso percorrer os valores internos?
java
properties
Click Voto a favor
fonte
fonte
null
. Veja Javadocproperties.load(PropertiesReader.class.getResourceAsStream("/properties.properties"));
que égetResourceAsStream
versusFileInputStream
? prós e contras?Você pode armazenar o arquivo em qualquer lugar que desejar. Se você deseja mantê-lo em seu arquivo jar, use
Class.getResourceAsStream()
ouClassLoader.getResourceAsStream()
acesse-o. Se estiver no sistema de arquivos, é um pouco mais fácil.Qualquer extensão é boa, embora .properties seja mais comum em minha experiência
Carregue o arquivo usando
Properties.load
, passando umInputStream
ou aStreamReader
se você estiver usando o Java 6. (Se você estiver usando o Java 6, eu provavelmente usaria UTF-8 e a emReader
vez da codificação ISO-8859-1 padrão para um fluxo. )Iterar através dele como você itera através de um normal
Hashtable
(queProperties
deriva de), por exemplo, usandokeySet()
. Como alternativa, você pode usar a enumeração retornada porpropertyNames()
.fonte
Se você colocar o arquivo de propriedades no mesmo pacote da classe Foo, poderá carregá-lo facilmente com
Dado que o Properties estende o Hashtable, você pode iterar os valores da mesma maneira que faria em um Hashtable.
Se você usar a extensão * .properties, poderá obter suporte do editor, por exemplo, o Eclipse possui um editor de arquivo de propriedades.
fonte
Existem várias maneiras de criar e ler
properties
arquivos:.properties
extensão, no entanto, você pode escolher o seu.java.util
pacote =>Properties
,ListResourceBundle
,ResourceBundle
classes.Properties
oujava.lang.System
classe.ResourceBundle
classe:Properties
classe:fonte
.properties
apenas de extensão? o que há de errado com a extensão '.txt'? por favor me ajude.Isso carrega o arquivo de propriedades:
Eu uso para colocar o arquivo .properties em um diretório em que tenho todos os arquivos de configuração, não o reuno com a classe que o acessa, mas não há restrições aqui.
Para o nome ... eu uso .properties para fins de verbosidade, acho que você não deve nomear .properties se não quiser.
fonte
Exemplo:
fonte
Propriedades tornou-se legado. A classe Preferences é preferida a Properties.
Diferentemente das propriedades que são pares de valores-chave baseados em String, a
Preferences
classe possui vários métodos usados para obter e colocar dados primitivos no repositório de dados Preferências. Podemos usar apenas os seguintes tipos de dados:Para carregar o arquivo de propriedades, você pode fornecer o caminho absoluto ou usar
getResourceAsStream()
se o arquivo de propriedades estiver presente em seu caminho de classe.arquivo xml:
Dê uma olhada neste artigo sobre informações internas da loja de preferências
fonte
Em ordem:
fonte
2. no extension is necessary
Você pode me fornecer qualquer referência para esta declaração, por favor. Eu tenho confusão nisso.Por padrão, o Java o abre no diretório de trabalho do seu aplicativo (esse comportamento realmente depende do sistema operacional usado). Para carregar um arquivo, faça:
Como tal, qualquer extensão de arquivo pode ser usada para o arquivo de propriedades. Além disso, o arquivo também pode ser armazenado em qualquer lugar, desde que você possa usar um
FileInputStream
.Em uma nota relacionada, se você usar uma estrutura moderna, a estrutura poderá fornecer maneiras adicionais de abrir um arquivo de propriedades. Por exemplo, o Spring fornece um
ClassPathResource
para carregar um arquivo de propriedades usando um nome de pacote de dentro de um arquivo JAR.Quanto à iteração pelas propriedades, uma vez carregadas, elas são armazenadas no
java.util.Properties
objeto, que oferece opropertyNames()
método.fonte
Lendo um arquivo de propriedades e carregando seu conteúdo para
Properties
A seguir, é apresentada a maneira eficiente de iterar em um
Properties
fonte
No Java 8, para obter todas as suas propriedades
fonte
1) É bom ter seu arquivo de propriedades no caminho de classe, mas você pode colocá-lo em qualquer lugar do projeto.
Abaixo está como você carrega o arquivo de propriedades do classpath e lê todas as propriedades.
2) Os arquivos de propriedades têm a extensão como .properties
fonte
Aqui está outra maneira de iterar sobre as propriedades:
fonte
Eu escrevi sobre essa estrutura de propriedades durante o último ano. Ele fornecerá várias maneiras de carregar propriedades e também será fortemente digitado.
Dê uma olhada em http://sourceforge.net/projects/jhpropertiestyp/
JHPropertiesTyped fornecerá ao desenvolvedor propriedades fortemente digitadas. Fácil de integrar em projetos existentes. Manipulado por uma grande série de tipos de propriedade. Permite a inicialização de uma linha de propriedades por meio de implementações de E / S de propriedades. Dá ao desenvolvedor a capacidade de criar tipos de propriedade e io's de propriedade. Também está disponível uma demonstração na Web, capturas de tela mostradas acima. Também tenha uma implementação padrão para um front end da Web para gerenciar propriedades, se você optar por usá-lo.
Documentação completa, tutorial, javadoc, faq etc. está disponível na página do projeto.
fonte
Aqui estática classe pronta
Aqui exemplo:
fonte
Você pode carregar o arquivo de propriedades processando da seguinte maneira:
E então você pode iterar sobre o mapa usando uma expressão lambda como:
fonte
na minha opinião, outras maneiras são preteridas quando podemos fazer isso de maneira muito simples, como abaixo:
é tão simples, mas acho que é o melhor caminho !! Aproveitar
fonte