[resolvido]ajuda aeeee galera por favor!- arquivo txt
26 respostas
evertonsilvagomesjav
Bom galera e o seguinte tenho a seguinte classe onde esta o metodo de criar o arquivo txt, ele lista pra mim no arquivo os dados que estao no listaClientes, porém eu queria gerar no mesmo arquivo junto dos dados da listaCliente as ContasCorrentes que estao em outra Classe e nao sei como fazer, ajuda ae galera!!!
packagebr.com.squadra.caixa.persistência.entidade;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collection;importjava.util.List;importjavax.swing.JOptionPane;importjavax.swing.text.html.HTMLDocument.Iterator;importbr.com.squadra.caixa.persistência.exceptions.ClienteExceptions;importbr.com.squadra.caixa.persistência.io.IO;importbr.com.squadra.caixa.persistência.principal.Principal;publicclassBancoextendsCliente{Stringnome;Stringendereço;inti=0;privateList<Cliente>listaClientes=newArrayList<Cliente>();Principalpesquisa=newPrincipal();publicList<Cliente>getListaClientes(){returnlistaClientes;}publicvoidsetListaClientes(List<Cliente>listaClientes){this.listaClientes=listaClientes;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetEndereço(){returnendereço;}publicvoidsetEndereço(Stringendereço){this.endereço=endereço;}publicbooleancadastrocliente(Clientecliente){listaClientes.add(cliente);i++;returntrue;}publicvoidexibirClientes(){inti=0;for(i=0;i<listaClientes.size();i++){if(listaClientes.get(i)!=null){JOptionPane.showMessageDialog(null,"Usuarios Cadastrados: \n"+listaClientes.get(i));}else{JOptionPane.showMessageDialog(null,"Cliente Não Cadastrado");}}}publicClientepesquisaClientes(Longid)throwsClienteExceptions{for(inti=0;i<listaClientes.size();i++){if(listaClientes.get(i)!=null&&listaClientes.get(i).getId().equals(id)){returnlistaClientes.get(i);}}thrownewClienteExceptions("Cliente Não Encontrado");}publicClienteexcluirClientes(Longid)throwsClienteExceptions{for(inti=0;i<listaClientes.size();i++){if(this.listaClientes.get(i)!=null&&this.listaClientes.get(i).getId().equals(id)){Clientecli=this.listaClientes.get(i);Stringsim=JOptionPane.showInputDialog("Deseja realmente Excluir: \n"+cli+"\n"+"Sim ou Não?");if(sim.equalsIgnoreCase("sim")){;this.listaClientes=null;returncli;}}}thrownewClienteExceptions("Exclusão não Concluída");}publicvoidincluirContaCorrente(Longid,ContaCorrentecontacorrente)throwsClienteExceptions{Clientec=pesquisaClientes(id);if(c.getId()!=null){c.adicionaContaCorrente(contacorrente);}}publicvoidlistarContaCorrente(Longid)throwsClienteExceptions{Clientec=pesquisaClientes(id);c.imprimirContaCorrente();}publicvoidescreveArquivo(){// METODO PARA CRIAR O ARQUIVO!!!Stringlinha="";for(inti=0;i<this.listaClientes.size();i++){Clientec=(Cliente)this.listaClientes.get(i);linha+=c.getId()+";"+c.getNome()+","+c.getCpf()+"\n";}IOarquivo=newIO();arquivo.criaArquivo(linha);}}
AQUI ESTA A CLASSE ONDE ESTAO ARRAYLIST DA CONTA CORRENTE.
packagebr.com.squadra.caixa.persistência.entidade;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JOptionPane;publicclassClienteextendsContaCorrente{Longid;Stringnome;Stringcpf;inti=0;Bancob;List<ContaCorrente>listaContaCorrente=newArrayList<ContaCorrente>();publicLonggetId(){returnid;}publicvoidsetId(Longid){this.id=id;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetCpf(){returncpf;}publicvoidsetCpf(Stringcpf){this.cpf=cpf;}publicStringtoString(){return"ID: "+id+"\n"+"Nome: "+nome+"\n"+"CPF: "+cpf;}publicvoidadicionaContaCorrente(ContaCorrentecontacorrente){//METODO PARA ADD A CONTA CORRENTE!!this.listaContaCorrente.add(contacorrente);JOptionPane.showMessageDialog(null,"Conta Corrente Incluida Com Sucesso\n "+"Numero da Conta: "+this.listaContaCorrente.get(i).getNumero()+"\n"+"Saldo: "+this.listaContaCorrente.get(i).getSaldo()+"\n"+"Cheque Especial: "+this.listaContaCorrente.get(i).getLimiteChequeEspecial());i++;}publicvoidimprimirContaCorrente(){for(inti=0;i<this.listaContaCorrente.size();i++){JOptionPane.showMessageDialog(null,"Conta Corrente \n "+listaContaCorrente.get(i).getNumero()+"\n"+"Saldo: "+listaContaCorrente.get(i).getSaldo()+"\n"+"ChequeEspecial: "+listaContaCorrente.get(i).getLimiteChequeEspecial());}}}
Tentou declarar a lista listaContaCorrente como static???
voce pode declara-la como estatica e puxar ela via objeto na hora de escrever no arquivo txt
evertonsilvagomesjav
nao etendi cara o que eu tentei fazer foi o seguinte no metodo de crirar o arquivo
publicvoidcriaArquivo(Stringmsg){
tentei fazer assim:
publicvoidcriaArquivo(Stringmsg,Stringmsg1){
mas aki no:
fileWriter.write(msg);//nao aceita colocar outro parâmetro ou seja mais uma string.
tipo assim:
fileWriter.write(msg,msg1);//nao aceita colocar outro parâmetro ou seja mais uma string.
AJUDA AE GALERA?
lina
Oi,
fileWriter = new FileWriter(file, true);
fileWriter.write(linha);
O segundo parametro booleano passado em FileWriter significa: append.
Ou seja, apenas se o nome do arquivo for o mesmo ele irá concatenar o texto de antes com o de agora.
Se ele não está fazendo isso, a naba do nome do arquivo presente na variavel file está diferente.
Por favor, tenha um pouco de calma! nem todo mundo sabe sobre este assunto e nem todo mundo é obrigado a responder.
Tchauzin!
evertonsilvagomesjav
ta desulpa ai o desespero rs…
mas como vou resolver meu problema?
lina
Oi,
Coloque um sysout ou um debug na linha:
fileWriter=newFileWriter(file,true);
Verifique qual o nome do arquivo está sendo passado na variavel file.
Se existir diferença no nome quando executado pela segunda vez, está errado! pois ele só irá dar append no mesmo arquivo.
Tchauzin!
evertonsilvagomesjav
mas olha só eu ja estava usando o file normal, eu so troquei o parametro pra tentar concatenar mais coisas no arquivo como pode ta com nome diferente?
lina
Oi,
Tá… então eu não entendi a sua dúvida. Qual o problema? não está concatenando os arquivos ?
Tchauzin!
evertonsilvagomesjav
ele esta concatenando mas ele concatena um arraylist so de clientes…
em outra classe eu tenho um arraylist das contascorrentes, eu queria concatenar os dois no mesmo arquivo, o array de contas e o dos clientes.
lina
Oi,
Não seria só chamar o método criaArquivo(String linha){} ???
Tchauzin!
evertonsilvagomesjav
chamando o metodo dentro da ContaCorrente mas como vou jogar ele no mesmo arquivo que esta armazenando os cliente, tentei aqui mas nao consegui =/
lina
Oi,
É isso que estou querendo dizer. Após chamar o método para gerar o arquivo, ele deverá concatenar automaticamente (pois foi utilizado o true como append.)
Tchauzin!
italo.vendrameto
E ai Jovem,
Vamos ao seu problema, cada cliente possui uma lista de contas corrente, para você adicionar a cada linha de cliente do seu arquivo as contas desse cliente altere seu método para fica como o demonstrado abaixo:
public void escreveArquivo(){ // METODO PARA CRIAR O ARQUIVO!!!
String linha = "";
for (int i = 0; i < this.listaClientes.size(); i++) {
Cliente c = (Cliente) this.listaClientes.get(i);
linha += c.getId() + ";" + c.getNome() + "," + c.getCpf();
for (int j = 0; j < c.listaContaCorrente.size(); j++) {
linha += ","+ c.listaContaCorrente.get(j).numeroConta;
}
linha += "\n";
}
IO arquivo = new IO();
arquivo.criaArquivo(linha);
}
evertonsilvagomesjav
opa Italo tranquilo o problema e o seguinte minha lista de ContasCorrentes esta em outra Classe…
Lina eu tentei chamar o metodo dentro do ContaCorrente mas nao deu =/
evertonsilvagomesjav
olha como esta o metodo para gerar no arquivo as contascorrentes
Everton, verifique o método abaixo, vamos valida-lo linha a linha
public void escreveArquivo(){ // METODO PARA CRIAR O ARQUIVO!!!
String linha = "";
for (int i = 0; i < this.listaClientes.size(); i++) {
Cliente c = (Cliente) this.listaClientes.get(i);
linha += c.getId() + ";" + c.getNome() + "," + c.getCpf();
for (int j = 0; j < c.listaContaCorrente.size(); j++) {
linha += ","+ c.listaContaCorrente.get(j).numeroConta;
}
linha += "\n";
}
IO arquivo = new IO();
arquivo.criaArquivo(linha);
}
Temos no primeiro for que inicia na linha 3 e vai até a linha 10 onde passamos por todos os clientes
Temos no segundo for que inicia na linha 6 e vai ate a linha 8 passar por todas as contas que estão no arraylist de contas daquela instancia de clientes
lina
Oi,
Vou pedir para você enviar as classes completas para fazer um teste real aqui no meu ambiente.
Tchauzin!
evertonsilvagomesjav
segue as 3 classes compeletas Lina:
Classe cliente
packagecom.squadra.caixa.persistencia.entidade;importjava.util.ArrayList;importjava.util.List;importjavax.swing.JOptionPane;importcom.squadra.caixa.persistencia.io.CriaArquivo;publicclassCliente{Longid;Stringnome;Stringcpf;inta,b,i=0;List<ContaCorrente>listaContaCorrente=newArrayList<ContaCorrente>();/**Encapsulamento get da variavel ID responsavel por retornar o conteudo da Variavel ID * @return */publicLonggetId(){returnid;}/**Encapsulamento set da variavel id responsavel por setar um conteudo a variavel id * @param id */publicvoidsetId(Longid){this.id=id;}/* (non-Javadoc) * @Encapsulamento get da variavel nome responsavel por retornar o conteudo da variavel nome */publicStringgetNome(){returnnome;}/* (non-Javadoc) * @Encapsulamento set da variavel nome responsavel por setar um conteudo a variavel nome */publicvoidsetNome(Stringnome){this.nome=nome;}/**Encapsulamento get da variavel cpf responsavel por retornar o conteudo da variavel cpf * @return */publicStringgetCpf(){returncpf;}/**Encapsulamento set da variavel cpf responsavel por setar um conteudo a variavel cpf * @param cpf */publicvoidsetCpf(Stringcpf){this.cpf=cpf;}/* (non-Javadoc) * Metodo toString responsavel por mostrar nome cpf e id do Cliente Cadastrado apos ser feito O cadastro. */publicStringtoString(){return"- ID : "+id+"\n"+" - Nome : "+nome+"\n"+"- CPF : "+cpf;}publicvoidadicionaContaCorrente(ContaCorrentecontaCorrente){listaContaCorrente.add(contaCorrente);JOptionPane.showMessageDialog(null,"Conta incluida com Sucesso");i++;}publicvoidlistarContacorrente(){for(inti=0;i<listaContaCorrente.size();i++){if(this.listaContaCorrente.get(i)!=null){JOptionPane.showMessageDialog(null,"Conta Corrente Solicitada: \n"+"Número da Conta: "+listaContaCorrente.get(i).getNumero()+"\n"+"Saldo: "+listaContaCorrente.get(i).getSaldo()+"\n"+"Limite Cheque Especial: "+listaContaCorrente.get(i).getLimiteChequeEspecial());}else{JOptionPane.showMessageDialog(null,"Este Cliente Não Possui Uma Conta Corrente");}}}publicvoidarquivoContaCorrente(){Stringarquivo=" ";for(inti=0;i<listaContaCorrente.size();i++){arquivo+=listaContaCorrente.get(i).getNumero()+";"+listaContaCorrente.get(i).getSaldo();}CriaArquivoio=newCriaArquivo();io.criaArquivo(arquivo);}}
Classe Banco
packagecom.squadra.caixa.persistencia.entidade;importjava.io.File;importjava.io.FileWriter;importjava.util.ArrayList;importjava.util.Collection;importjava.util.List;importjavax.naming.NotContextException;importjavax.swing.JOptionPane;importcom.squadra.caixa.persistencia.exceptions.Exceptions;importcom.squadra.caixa.persistencia.io.CriaArquivo;publicclassBancoextendsCliente{privateStringnome;privateStringendereço;inti=0;intcontadorCliente=0;List<Cliente>listaClientes=newArrayList<Cliente>();/** Metodo get retorna um nome setado á variavel nome * @return */publicStringgetNome(){returnnome;}/** Metodo set seta um nome á variavel nome * @param nome */publicvoidsetNome(Stringnome){this.nome=nome;}/** Metodo get retorna o endereço setado á variavel endereço * @return */publicStringgetEndereço(){returnendereço;}/** Metodo set seta um endereço á variavel endereço * @param endereço */publicvoidsetEndereço(Stringendereço){this.endereço=endereço;}/* (non-Javadoc) * @see java.lang.Object#toString() */publicStringtoString(){return"Nome: "+nome+" Endereço: "+endereço;}privateCollectionclientes;publicCollectiongetClientes(){returnclientes;}publicvoidsetClientes(Collectionclientes){this.clientes=clientes;}/** * @param Cliente cliente (variavel responsavel por receber objeto do tipo cliente) * @return true (retorna verdadeiro se ocorrer o cadastro) * @throws Exceptions (tratamento de exceção caso nao ocorra o cadastro) * Método Utilizado para Cadastro de Clientes. */publicClientecadastrarCliente(Clientecliente)throwsExceptions{this.listaClientes.add(cliente);Clientecli=this.listaClientes.get(i);i++;returncli;}/** * Método Utilizado Para Listar Clientes Cadastrados. */publicvoidlistarClientes(){for(inti=0;this.listaClientes.size()>i;i++){Clientecli=this.listaClientes.get(i);if(cli!=null){JOptionPane.showMessageDialog(null,"Usuários Cadastrados \n"+cli);}else{JOptionPane.showMessageDialog(null,"Não Existe Usuários Cadastrados");}}}/** * @param Long id (variável responsável por receber id digitado pelo usuário para a pesquisa do cliente). * @return cliente (retora o cliente procurado) * @throws Exceptions (tratamento de exceção caso nao ache o Cliente pesquisado) * Método utilizado para a Pesquisa pelo ID do Cliente. */publicClientepesquisaCliente(Longid)throwsExceptions{for(inti=0;i<this.listaClientes.size();i++){if(this.listaClientes.get(i)!=null&&this.listaClientes.get(i).getId().equals(id)){Clientecliente=this.listaClientes.get(i);returncliente;}}thrownewExceptions("Cliente Não Encontrado");}/** * @param Long id (variável responsável por receber o id solicitado para a exclusão do Cliente). * @return cli (retorna o cliente excluído). * @throws Exceptions (tratamento de exceção caso não exclua o cliente desejado). * Método utilizado para exclusão de Clientes. */publicClienteexcluirCliente(Longid)throwsExceptions{for(inti=0;i<this.listaClientes.size();i++){if(this.listaClientes.get(i)!=null&&this.listaClientes.get(i).getId().equals(id)){;Stringsim=JOptionPane.showInputDialog(null,"Deseja Realmente Excluir? \n"+listaClientes.get(i)+"\n"+"Sim ou Não ?");if(sim.equalsIgnoreCase("sim")){;Clientecli=this.listaClientes.get(i);this.listaClientes=null;returncli;}}}thrownewExceptions("Impossível Excluir \nExclusão Não Realizada");}publicvoidincluirContaCorrente(Longid,ContaCorrentecontaCorrente)throwsExceptions{Clientecli=pesquisaCliente(id);cli.adicionaContaCorrente(contaCorrente);}publicvoidimprimirContaCorrente(Longid)throwsExceptions{Clientecliente=newCliente();cliente=pesquisaCliente(id);JOptionPane.showMessageDialog(null,"Cliente: \n"+"Nome: "+cliente.getNome()+"\n"+"CPF: "+cliente.getCpf());try{cliente.listarContacorrente();}catch(Exceptione){JOptionPane.showMessageDialog(null," "+e.getMessage());}}publicvoidarquivo(){Stringmsg="ID: ";for(inti=0;i<listaClientes.size();i++){msg+=+listaClientes.get(i).getId()+" "+"Nome: "+listaClientes.get(i).getNome()+" "+"CPF: "+listaClientes.get(i).getCpf()+"\n";}CriaArquivoc=newCriaArquivo();c.criaArquivo(msg);}}
Agora faltou a classe Conta e a classe que roda essa aplicação (main). rsrs
pelo visto não vai ser facil!!! tem muitos extends! =D
Obs: Se preferir, pode mandar o pacote zipado para meu e-mail, assim que possível analisarei!
Tchauzin!
lina
Oi,
O que acontece é que a listaContaCorrente zerava ao sair da classe Cliente.
Então, tive que mudar o método escreveArquivo() da classe Banco.
publicvoidescreveArquivo(){Stringlinha="";for(inti=0;i<this.listaClientes.size();i++){Clientec=(Cliente)this.listaClientes.get(i);linha+=c.getId()+";"+c.getNome()+","+c.getCpf()+"\n";try{c=pesquisaClientes(c.getId());if(c.listaContaCorrente.size()>0){linha+=c.listaContaCorrente.get(i).numero+";"+c.listaContaCorrente.get(i).saldo+","+c.listaContaCorrente.get(i).getLimiteChequeEspecial()+"\n";}}catch(ClienteExceptionse){// Cliente não encontrado.}}IOarquivo=newIO();arquivo.criaArquivo(linha);}
Ou seja, primeiro é pesquisado o cliente e depois busca a conta corrente dele. Entendeu ?
Tchauzin!
evertonsilvagomesjav
Lina muito muito maiiis muitooooo obrigado pela ajuda que vc me deu!!!