Boa tarde
tava fazendo um trabalho onde eu tinha que fazer um crud que salva as informações do cadastro de um Usuário em arquivo txt, além disso o programa deveria ter a opção de poder buscar um contato pelo nome ou telefone dele caso necessário, como eu faço para o usuario poder fazer essa pesquisa no txt ?
privateStringnome;privateStringemail;privateStringtelefone;publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicStringgetTelefone(){returntelefone;}publicvoidsetTelefone(Stringtelefone){this.telefone=telefone;}publicStringCadastrar(){try{FileWriterfw=newFileWriter("C:"+File.separatorChar+""+File.separatorChar+""+File.separatorChar+"",true);PrintWriterpw=newPrintWriter(fw);pw.println("Nome: "+this.nome);pw.println("Email: "+this.email);pw.println("Telefone: "+this.telefone);pw.flush();pw.close();fw.close();}catch(IOExceptionex){System.out.printf("Erro Ao Cadastrar Contato:\n");}return"Cadastro Efetuado Com Sucesso!";}
Sua classe deveria se chamar Contato, no singular, pois cada instância dela representa um contato e não vários.
Não é possível criar um arquivo chamado C:\\\.
Sugiro criar uma constante para o arquivo que você vai manipular, afinal todos os objetos vão ser gravados e lidos do mesmo arquivo:
Siga as boas práticas do Java, renomeie seu método Cadastrar para cadastrar, em minúsculo.
Eu faria sua classe Contato dessa forma:
packagetrabalho;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.ArrayList;importjava.util.List;importjava.util.function.Predicate;publicclassContato{publicstaticfinalFileARQUIVO=newFile("C:","contatos.txt");privatestaticfinalStringCAMPO_NOME="Nome";privatestaticfinalStringCAMPO_EMAIL="Email";privatestaticfinalStringCAMPO_TELEFONE="Telefone";publicstaticList<Contato>listar(){List<Contato>contatos=newArrayList<Contato>();if(ARQUIVO.exists()){try{BufferedReaderreader=newBufferedReader(newFileReader(ARQUIVO));Stringlinha=null;do{Contatocontato=newContato();booleansetouAlgumCampo=false;linha=reader.readLine();setouAlgumCampo|=setarCampo(contato,linha);linha=reader.readLine();setouAlgumCampo|=setarCampo(contato,linha);linha=reader.readLine();setouAlgumCampo|=setarCampo(contato,linha);if(setouAlgumCampo){contatos.add(contato);}}while(linha!=null);reader.close();}catch(IOExceptionex){ex.printStackTrace();}}returncontatos;}publicstaticList<Contato>pesquisar(Predicate<Contato>condicaoDeBusca){List<Contato>todos=listar();List<Contato>encontrados=newArrayList<Contato>();for(Contatocontato:todos){if(condicaoDeBusca.test(contato)){encontrados.add(contato);}}returnencontrados;}privatestaticbooleansetarCampo(Contatocontato,Stringlinha){if(linha!=null&&!(linha=linha.trim()).isEmpty()){String[]textoSeparado=linha.split(":");Stringcampo=textoSeparado[0];Stringvalor=textoSeparado[1];if(campo.equals(CAMPO_NOME)){contato.setNome(valor);returntrue;}if(campo.equals(CAMPO_EMAIL)){contato.setEmail(valor);returntrue;}if(campo.equals(CAMPO_TELEFONE)){contato.setTelefone(valor);returntrue;}}returnfalse;}privateStringnome;privateStringemail;privateStringtelefone;publicContato(){}publicStringcadastrar(){try{PrintWriterwriter=newPrintWriter(newFileWriter(ARQUIVO,true));writer.println(CAMPO_NOME+": "+nome);writer.println(CAMPO_EMAIL+": "+email);writer.println(CAMPO_TELEFONE+": "+telefone);writer.flush();writer.close();}catch(IOExceptionex){ex.printStackTrace();return"Erro ao Cadastrar Contato:";}return"Cadastro Efetuado Com Sucesso!";}publicStringgetEmail(){returnemail;}publicStringgetNome(){returnnome;}publicStringgetTelefone(){returntelefone;}publicvoidsetEmail(Stringemail){this.email=email;}publicvoidsetNome(Stringnome){this.nome=nome;}publicvoidsetTelefone(Stringtelefone){this.telefone=telefone;}}
Abaixo tem um programinha de exemplo, utilizando a classe Contato:
packagetrabalho;importjava.util.List;publicclassExemplo{publicstaticvoidmain(String[]args){Exemploprograma=newExemplo();programa.executar();}publicvoidexecutar(){List<Contato>cadastrados=Contato.listar();listarContatos(cadastrados);cadastrarAlgunsContatos();cadastrados=Contato.listar();listarContatos(cadastrados);pesquisarContatosPorNome("Zequinha");pesquisarContatosPorNome("Beltrano");pesquisarContatosPorEmail("[email removido]");pesquisarContatosPorEmail("[email removido]");pesquisarContatosPorTelefone("[telefone removido]");pesquisarContatosPorTelefone("[telefone removido]");}privatevoidlistarContatos(List<Contato>contatos){System.out.println("Lista de Contatos:");if(contatos.isEmpty()){System.out.println(" Vazia");}else{for(Contatocontato:contatos){System.out.println(" Nome: "+contato.getNome());System.out.println(" Email: "+contato.getEmail());System.out.println(" Telefone: "+contato.getTelefone());System.out.println();}}}privatevoidcadastrarAlgunsContatos(){Contatocontato=newContato();contato.setNome("Fulano");contato.setEmail("[email removido]");contato.setTelefone("[telefone removido]");System.out.println(contato.cadastrar());contato=newContato();contato.setNome("Ciclano");contato.setEmail("[email removido]");contato.setTelefone("[telefone removido]");System.out.println(contato.cadastrar());contato=newContato();contato.setNome("Beltrano");contato.setEmail("[email removido]");contato.setTelefone("[telefone removido]");System.out.println(contato.cadastrar());}privatevoidpesquisarContatosPorNome(Stringnome){System.out.println("Pesquisando pelo nome \""+nome+"\"...");List<Contato>encontrados=Contato.pesquisar(contato->contato.getNome().contains(nome));listarContatos(encontrados);}privatevoidpesquisarContatosPorEmail(Stringemail){System.out.println("Pesquisando pelo email \""+email+"\"...");List<Contato>encontrados=Contato.pesquisar(contato->contato.getEmail().contains(email));listarContatos(encontrados);}privatevoidpesquisarContatosPorTelefone(Stringtelefone){System.out.println("Pesquisando pelo telefone \""+telefone+"\"...");List<Contato>encontrados=Contato.pesquisar(contato->contato.getTelefone().contains(telefone));listarContatos(encontrados);}}