GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Gravar objetos em arquivos .txt verificando se já não existe

java
arraylist
programação
while
Tags: #<Tag:0x00007f852bc5e178> #<Tag:0x00007f852bc5df98> #<Tag:0x00007f852bc5ddb8> #<Tag:0x00007f852bc5dae8>

#1

Preciso armazenar objetos dentro de um ArrayList e depois gravar os dados em um arquivo de texto. Eu queria implementar algo que verificasse se o dado já está gravado no .txt, para que não ocorra de ter dois objetos exatamente iguais. Segue a baixo a minha tentativa falha:

//listaP é minha ArrayList

				String linha2 = null;
				while ((linha2 = bufferleitor.readLine()) != null){   //LÊ O TXT LINHA POR LINHA
					String[] linhasplit2 = new String[5];  //CRIA UM ARRAY DE 5
					linhasplit2 = linha2.split("-");   //PREENCHE O ARRAY
					int i = 0;
					if(linhasplit2[0].equals(listaP.get(i).getNomeP())&& linhasplit2[1].equals(listaP.get(i).getIdadeP())){
						i++; //?
					} else{
						buffer.write(listaP.get(i).getNomeP()+"-"+listaP.get(i).getIdadeP()+"-"+listaP.get(i).getRaca()+"-"+listaP.get(i).getClasse()+"-"+listaP.get(i).getHistoria()+"-\n");
					}
				}

#2

Crie um List fora do seu while, ex.:

List<String> lista = new ArrayList<String>();

Crie uma função para percorrer a lista e verificar se a linha já foi escrita:

public boolean existe (List<String> array, String linha2){

       if(array != null){
            for(String linha : array){
                 if(linha.equals(linha2)){
                      return true;
                 }
            }
       }

       return false;

}

Depois adicione cada linha do seu TXT no array quando ela não existir, verificando antes se ela já foi adicionada na lista:

if(existe(lista, linha2)){
      // Linha existe
}else{
     // Linha não existe
     lista.add(linha2);
}