Quando escrevemos programas, alguns parâmetros geralmente são alterados, mas essa mudança não é o que prevemos. Por exemplo, desenvolvemos um módulo que opera o banco de dados. Durante o desenvolvimento, nos conectamos ao banco de dados local e ao IP, nome do banco de dados, nome da tabela, host de banco de dados e outras informações são locais. Para tornar o módulo que opera universal os dados, as informações acima não podem ser gravadas no programa. Normalmente, nossa abordagem é usar arquivos de configuração para resolvê -lo.
Vários idiomas têm seus próprios tipos de arquivos de configuração suportados. Por exemplo, Python, ele suporta arquivos .ini. Como possui uma classe ConfigParser dentro para apoiar a leitura e a escrita de arquivos .ini, os programadores podem operar livremente arquivos .ini de acordo com os métodos fornecidos por esta classe. Em Java, o Java suporta a leitura e a escrita dos arquivos .Properties. A classe Java.util.Properties embutida no JDK nos proporciona conveniência em arquivos de .Properties operando.
um. .properties Formulário de arquivo
# A seguir, o servidor e o banco de dados Information dbport = Localhost DatabaseName = mydb dbuserName = root dbpassword = root # A seguir, é apresentado as informações da tabela de banco de dados dbtable = myTable # a seguir, é o servidor informações IP = 192.168.0.9
No arquivo acima, assumimos que o nome do arquivo é: arquivo test.properties. O primeiro comportamento de # comenta as informações; No lado esquerdo do sinal igual "=" Chamamos de chave; No lado direito do sinal igual "=" Chamamos de valor. (De fato, é o que geralmente chamamos de pares de valor-chave) A chave deve ser uma variável em nosso programa. E o valor é configurado de acordo com a situação real.
dois. Classe de propriedades no JDK
A classe de propriedades existe na célula java.util, que herda da hashtable, e fornece vários métodos principais:
1. GetProperty (chave da string), pesquise propriedades nesta lista de propriedades com a chave especificada. Ou seja, através da chave do parâmetro, obtemos o valor correspondente à chave.
2. Carregar (InputStream Instream), lê a lista de atributos (chave de chave e elemento) a partir do fluxo de entrada. Obtenha todos os pares de valor-chave no arquivo carregando o arquivo especificado (como o arquivo test.properties acima). Para obter o GetProperty (chave da string) para pesquisar.
3. SetProperty (tecla String, String Value), Call Hashtable Method Put. Ele define o par de valores-chave do valor chamando o método put da classe base.
4. Armazene (saída de saída, comentários de string), grava a lista de propriedades (tecla e par de elementos) nesta tabela de propriedades no fluxo de saída em um formato adequado para carregar na tabela Propriedades usando o método de carga. Em contraste com o método de carga, este método grava pares de valor-chave no arquivo especificado.
5. Clear (), limpe todos os pares de valor de chave carregados. Este método é fornecido na classe base.
Com os métodos acima, podemos operar no arquivo .Properties!
3. Exemplo de arquivo de propriedades de leitura java
Existe uma caixa de arquivos Propriedades.properties, com o seguinte conteúdo:
Color = redname = boxLength = 18Width = 7heigth = 8
Para obter o valor do atributo, você pode usar o seguinte código:
InputStream in = null; Propriedades P = new Properties (); Try {in = new BufferInputStream (new FileInputStream ("box.properties"); p.load (in);} catch (fileNotfoundException e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE ();} Catch (IoException e) {// TELAGEM AUTO-GENERATO DE AUTOMELAÇÃO E.PrintStackTrace ();} Enumeração <ject> TECHAS = P.Keys (); while (keys.hasMoreElements ()) {string key = (string) keys.nextElement (); System.out.println (Key + ":" + P.GetProperty (key));}ou:
InputStream in; ResourceBundle rb = null; tente {in = new BufferInputStream (new FileInputStream ("box.properties")); rb = new PropertyResourceBundle (in);} Catch (filenotfoundException e1) {// TODO BLOCO DE CAPAGEM AUTOGERADO E1.PRINTSTACKTRACE ();} Catch (IoException E) {// TODO Auto-Generated Catch Block E.PrintStackTrace ();} se (Rb! rb.getKeys (); while (keys.hasMoreElements ()) {string key = (string) keys.nextElement (); System.out.println (chave + ":" + rb.getString (key)); }}No entanto, a ordem de saída é diferente do arquivo original.