Arquivo Properties

Boa tarde galera

Tenha a seguinte tarefa, vou explicar com detalhes

“Deverá ler um arquivo de propriedades com estrutura CAMPO=VALOR em cada linha (usando a classe java.util.Properties). O caminho do arquivo de propriedades deverá ser indicado através de um parâmetro da linha de comando, chamado --config ou -C . Exemplo: java MeuPrograma --config C:/teste.properties … OK? Então o programa deverá ler todas as propriedades e imprimir na tela toda estrutra do arquivo no modelo CAMPO=VALOR”

“no mesmo programa, implementar um novo parâmetro chamado --excluir ou -E que deverá ser seguido dos nomes dos campos (separados por vírgulas) que não deverão ser exibidos na tela. Exemplo: java MeuPrograma --config C:/teste.properties --excluir dataNascimento,estadoCivil,cpf
Então estes campos não deverão ser exibidos na tela. Caso seja informado o nome de um campo que não exista no arquivo, deverá ser apenas ignorado sem apresentar erro no programa.”

Fiz o seguinte código para um arquivo properties

método chamado, passando String§ do arq.properties que o usuário deseja.

public void carregarProp(String p) throws IOException {

		try {

			FileInputStream fis = new FileInputStream(p);
			Properties prop = new Properties(System.getProperties());
			prop.load(fis);
			
			System.out.println(prop.getProperty("address"));
			System.out.println(prop.getProperty("port"));

		} catch (Exception e) {
			// TODO: handle exception
		}
	}

Duvidas:

-Alguém poderia me explicar o significado dos --config ou -C e --excluir ou -E, é puro e simplesmente uma String do caminho do arquivo.prop e um nome de método?

-O arquivo contém 23 linhas, então por um System.out para cada linha, acho q ficaria fora da lógica.
Como faço para percorrer todo arquivo e ir imprimindo, tipo usando alguma estrutura de repetição(for, while…) ou algum outro método

No momento, são essas dúvidas.

Obrigado pessoal!!!

Os comandos de linha de comando (como “-E” ou “–config”) devem ser obtidos do parãmetro “args” do método main.

==EDIT==

Devo ir nas propriedades do arquivo q esta o main e configurar o “Program arguments”
ponto os devidos argumentos para o main ?

É sim. É que o professor está supondo que você está a rodar seu programa pela linha de comando.

entendi !!!
é q ainda n me acostumei a rodar os programas pelo terminal linux

mas e a parte

“parâmetro chamado --excluir ou -E que deverá ser seguido dos nomes dos campos (separados por vírgulas) que não deverão ser exibidos na tela”

como eleboro essa parte?
do mesmo jeito do args do main ?

==EDIT==

poderia me ajudar nas outras partes?

Existe um método chamado split na classe String. Este método recebe como parâmetro a expressão regular (neste caso pode ser a ‘,’) que deve separar os dados.
Com este método você vai conseguir separar os campos que recebeu em um Array, que será o retorno deste método.

Mas como vou fazer com q percorra cada linha do arquivo properties, adicionando em cada posição do split ?

...
if(args[i].equals("--excluir") or args[i].equals("-E")) {
  String fields = args[++i];
  String[] fieldsArray = fields.split(",");
  for(String s: fieldsArray) {
    System.out.println(s);
  }
}

...

Agora é só você pensar um pouco, não posso fazer tudo :wink:

Qual função utilizo para ler todas as chaves das propriedades carregadas (.load), tipo um Collection. Para a partir daí ler os valors e imprimir na tela, não tendo q ler propriedade por propriedade com o getProperty(“key”).
Tornar algo mais dinâmico e não tão manualmente.

Vlw galera!