[resolvido]ajuda aeeee galera por favor!- arquivo txt

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!!!

[code]package br.com.squadra.caixa.persistência.entidade;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.text.html.HTMLDocument.Iterator;

import br.com.squadra.caixa.persistência.exceptions.ClienteExceptions;
import br.com.squadra.caixa.persistência.io.IO;
import br.com.squadra.caixa.persistência.principal.Principal;

public class Banco extends Cliente {

String nome;
String endereço;
int i=0;
		
private List<Cliente> listaClientes = new ArrayList<Cliente>();
Principal pesquisa =new Principal();

public List<Cliente> getListaClientes() {
	return listaClientes;
}
public void setListaClientes(List<Cliente> listaClientes) {
	this.listaClientes = listaClientes;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getEndereço() {
	return endereço;
}
public void setEndereço(String endereço) {
	this.endereço = endereço;
}

public boolean cadastrocliente (Cliente cliente) {
		listaClientes.add(cliente);
		i++;
		return true;
	
		}

    public void exibirClientes() {  
	  int i=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");}
       }
    }
     
	
    public Cliente pesquisaClientes(Long id) throws ClienteExceptions{  
    	for(int i = 0; i < listaClientes.size() ; i++){  
    				if(listaClientes.get(i)!=null && listaClientes.get(i).getId().equals(id)){ 
    	                   return listaClientes.get(i);
    	         	   }
    				
    	 }
    			
	     		throw new ClienteExceptions ("Cliente Não Encontrado");		  
     }
      
   
    
    public Cliente excluirClientes (Long id) throws ClienteExceptions {
      	for (int i = 0; i < listaClientes.size(); i++) {
			if (this.listaClientes.get(i)!= null && this.listaClientes.get(i).getId().equals(id)) {
				 Cliente cli = this.listaClientes.get(i);
				 		String sim=JOptionPane.showInputDialog("Deseja realmente Excluir: \n" +cli +"\n" +"Sim ou Não?" );
							if(sim.equalsIgnoreCase("sim")){;
								this.listaClientes=null;
								    return cli;
										}
			  }

		}

      	throw new ClienteExceptions ("Exclusão não Concluída");
			
   }
   
    public void incluirContaCorrente (Long id, ContaCorrente contacorrente) throws ClienteExceptions{
       	Cliente c=pesquisaClientes(id);
       	if(	c.getId() != null){
    	c.adicionaContaCorrente(contacorrente);
    
       	}
    }
    
    public void listarContaCorrente (Long id) throws ClienteExceptions{
    	Cliente c =pesquisaClientes(id);
    	   	
       	c.imprimirContaCorrente();

    	
    }
    
    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() + "\n";
			
		}
		IO arquivo = new IO();
		arquivo.criaArquivo(linha);
	}

}[/code]

AQUI ESTA A CLASSE ONDE ESTAO ARRAYLIST DA CONTA CORRENTE.

[code]package br.com.squadra.caixa.persistência.entidade;

import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class Cliente extends ContaCorrente {

Long id;
String nome;
String cpf;
int i=0;
Banco b;

List listaContaCorrente = new ArrayList();

public Long getId() {
	return id;
}
public void setId(Long id) {
	this.id = id;
}
public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}

public String toString() {
    return "ID: " +id +"\n"  +"Nome: " +nome +"\n" +"CPF: " +cpf;
}

public void adicionaContaCorrente(ContaCorrente contacorrente){ //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++;
}
public void imprimirContaCorrente (){
	
	for ( int i=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());
										
		
	
	}
	
	}
}[/code]

E AQUI ESTA A CLASSE ONDE EU CRIO O ARQUIVO

[code]import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

public class IO {

	public static void criaArquivo(String linha){
	File file = null;
	FileWriter fileWriter = null;
	
	try {
		file = new File(System.clearProperty("user.dir") + File.separator + "clientes.doc");
		
		fileWriter = new FileWriter(file, true);
		
		fileWriter.write(linha);
		
	} catch (IOException e) {
		e.printStackTrace();
	}finally{
		if(fileWriter != null){
			try {
				fileWriter.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}[/code]

ALGUEMMM??

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

nao etendi cara o que eu tentei fazer foi o seguinte no metodo de crirar o arquivo

public void criaArquivo (String msg){

tentei fazer assim:

public void criaArquivo (String msg, String msg1){

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?

Oi,

[code]fileWriter = new FileWriter(file, true);

fileWriter.write(linha);[/code]

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!

ta desulpa ai o desespero rs…

mas como vou resolver meu problema?

Oi,

Coloque um sysout ou um debug na linha:

fileWriter = new FileWriter(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!

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?

Oi,

Tá… então eu não entendi a sua dúvida. Qual o problema? não está concatenando os arquivos ?

Tchauzin!

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.

Oi,

Não seria só chamar o método criaArquivo(String linha){} ???

Tchauzin!

chamando o metodo dentro da ContaCorrente mas como vou jogar ele no mesmo arquivo que esta armazenando os cliente, tentei aqui mas nao consegui =/

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!

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); }

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 =/

olha como esta o metodo para gerar no arquivo as contascorrentes

public void arquivoContaCorrente( ){ String arquivo = " "; for(int i = 0; i < listaContaCorrente.size(); i++){ arquivo+= listaContaCorrente.get(i).getNumero() +";" +listaContaCorrente.get(i).getSaldo(); } CriaArquivo io = new CriaArquivo(); io.criaArquivo(arquivo); }

e aqui para gerar os clientes no arquivo:

[code]
public void arquivo (){
String msg = "ID: ";

	for(int i=0; i < listaClientes.size(); i++){
	msg+= +listaClientes.get(i).getId() +" "	+"Nome: " +listaClientes.get(i).getNome() +" "  +"CPF: " +listaClientes.get(i).getCpf() +"\n" ;
		
	}
	
	CriaArquivo c = new CriaArquivo();
	c.criaArquivo(msg);
	
	 }[/code]

Em qual classe esta a sua lista de contas?

[quote=evertonsilvagomesjava]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 =/[/quote]

Oi,

Porque não deu?

Tchauzin!

o arrayList das ContasCorrentes estao na classe Cliente
o arraylist dos Clientes estao na classe Banco.

classe Banco contem:

[code] public void arquivo (){
String msg = "ID: ";

	for(int i=0; i < listaClientes.size(); i++){
	msg+= +listaClientes.get(i).getId() +" "	+"Nome: " +listaClientes.get(i).getNome() +" "  +"CPF: " +listaClientes.get(i).getCpf() +"\n" ;
		
	}
	
	CriaArquivo c = new CriaArquivo();
	c.criaArquivo(msg);
	
	 }[/code]

clase Cliente contem:

public void arquivoContaCorrente( ){ String arquivo = " "; for(int i = 0; i < listaContaCorrente.size(); i++){ arquivo+= listaContaCorrente.get(i).getNumero() +";" +listaContaCorrente.get(i).getSaldo(); } CriaArquivo io = new CriaArquivo(); io.criaArquivo(arquivo); }

E AKI ESTA A CLASSE QUE CRIA O ARQUIVO

[code]public class CriaArquivo {
public void criaArquivo (String msg){
File file = null;
FileWriter fileWriter = null;
Cliente cli = null;
try {
file = new File(System.getProperty(“user.dir”) + File.separator + “clientes.doc”);

		fileWriter = new FileWriter(file, true);
		 cli = new Cliente ();
		fileWriter.write(msg);
		
	} catch (IOException e) {
		e.printStackTrace();
	}finally{
		if(fileWriter != null){
			try {
				fileWriter.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}[/code]

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