Problemas ao tentar gravar em arquivo.txt

7 respostas
cleitonnribeiro
import java.util.Scanner;
public class agendafatec {
	public static void main(String args[])
	{
	  String name,email,telefone = "";
	  Scanner input = new Scanner(System.in);
	  String resp = "0";
	  do{
	  System.out.printf(" :. Seja bem vindo a agenda 0.1 .:");
	  System.out.printf("\n* 1     Incluir Contato");
	  System.out.printf("\n* 2     Alterar Contato");
	  System.out.printf("\n* 3     Pesquisar Contato");
	  System.out.printf("\n* 4     Excluir Contato");
	  System.out.printf("\n* 5         Sair\n");
	  resp = input.nextLine();
	  if(resp == "1");
	  {
	  System.out.printf("Digite o nome do contato.:");
	  name = input.nextLine();	  
	  contatos cont = new contatos();
	  cont.AdicionaCont(name);
	  System.out.printf("Digite o email do contato.:");
	  email = input.nextLine();	  
	  cont.AdicionaEmail(email);
	  System.out.printf("Digite o telefone do contato acompanhado de DDD, no formato "+"(00)" + "0000 0000.:");
	  telefone = input.nextLine(); 
	  cont.AdicionaTelefone(telefone);
	  }
	  if(resp == "2");
	  {
	  
	  }  
	  }while (!"5".equals(resp));
	  System.out.printf("Obrigado por usar a agenda");
	  		
	}

}
import java.io.BufferedWriter;    
import java.io.File;    
import java.io.FileWriter;    
import java.io.IOException;    
import java.nio.Buffer;  
import java.util.ArrayList;    
public class contatos {    
    
   String nome,telefone,email;    
       
   ArrayList<String>Cont = new ArrayList<String>();    
   ArrayList<String>Email = new ArrayList<String>();    
   ArrayList<String>Telefone = new ArrayList<String>();    
       
   public void AdicionaCont(String nome)    
   {    
      Cont.add(nome);    
      System.out.println("Foi adicionado o nome: "+nome);    
         
   }    
   public void AdicionaEmail(String email)    
   {    
      Cont.add(email);    
      System.out.println("Foi adicionado o e-mail:  "+email);    
   }    
   public void AdicionaTelefone(String telefone)    
   {    
      Cont.add(telefone);    
      System.out.println("Foi adicionado o telefone: "+telefone);    
          
     try{BufferedWriter out = new BufferedWriter(new FileWriter("conteudo.txt"));  
      out.write("\nNome do Contato: "+nome);   
      out.write("\nEmail do Contato "+email);  
      out.write("\nTelefone do Contato "+telefone);  
      out.close();  
  }  
  catch(IOException e){  
     e.printStackTrace();    
        
  }  
  
  System.out.println("Acabei de escrever no arquivo");  
    
  System.exit(0);  
}  
  
           
        
   }

O arquivo de texto gerado, fica da seguinte maneira:
Nome do Contato: nullEmail do Contato nullTelefone do Contato [telefone removido]

Eu entendi que a unica variavel que ele escreveu no arquivo foi a telefone e justo a classe que contem essa variavel, contém também o metodo para gravar em arquivo. Desta forma imagino que para resolver o problema seria necessario colocar todos os metodos .add numa unica classe e dentro dessa mesma classe o metodo de gravação do arquivo.txt, mas não encontro a forma de faze-lo.

7 Respostas

leandronsp

Cria uma classe com os setters. E na mesma classe cria um método que escreve no arquivo, usando os atributos que foram setados.
Exemplo:

class Contato {
   // setters aqui

   void escreveNoArquivo(String nomeArquivo) {
       // Buffered aqui, usando os atributos da classe
   }
}

class Main {
   main(String args) {
       Contato contato = new Contato();
       contato.setNome("bla");
        // seta os outros

       contato.escreveNoArquivo("nome.txt");
   }
}
Leandro_M

Pelo que vi você está mandando imprimir as variáveis nome,telefone,email do tipo String. Estas por sua vez não estão sendo setadas, por isso vem null.

Não vejo problema se você quer trabalhar com litas, porém para funcionar você vai ter que percorrer as listas e escrever no arquivo o que tem nela.

Outra forma é:

Criar um classe para colocar os get e set

public class Contato{

String nome;
String telefone;
String email;

//get e set

}
public class ContatoController{

//Cria o método para escrever no arquivo txt

public void escreverTXT(Contato c){

    // Efetiva contato

}
}
public class AgendaFatec(){

public static void main(String args[]){

    Contato cont = new Contato();
    ContatoController cc = new ContatoController();

    System.out.printf("Digite o nome do contato.:");  
    name = input.nextLine();      
    cont.setNome(name);
    //faz os mesmo para os demais campos
    
    //por fim
    cc.escreverTXT(cont);

}
}

Espero ter ajudado

Abs

cleitonnribeiro
public void escreverTXT(Contato c){  
  
    // Efetiva contato

Não entendi essa parte, e para falar a verdade eu não entendi a estrutura que vocês me passaram.

Eu ja usei set e get umas poucas vezes e nao tenho certeza de como aplica-lo aqui.

R

olha rodei o programa, mas nao sei onde ele gravou o arquivo. onde está o conteudo txt. onde ele cria?

no c nao foi…

ok…

jaboot

Por padrão, se não for especificado um lugar, ele deveria criar no mesmo diretório do jar executável

cleitonnribeiro:
Não entendi essa parte, e para falar a verdade eu não entendi a estrutura que vocês me passaram.

Eu ja usei set e get umas poucas vezes e nao tenho certeza de como aplica-lo aqui.


Não tem problema, a gente está aqui pra isso, pra ajudar. O que o pessoal está querendo dizer é para você separar um pouco mais o seu código. Criar mais classes. E uma especificamente para manipular os arquivos.

Siga o que o Leandro M. sugeriu.

R

e aí conseguiu?

cleitonnribeiro

Tentei fazer da maneira abaixo, e ao tentar executar o programa a IDE(eclipse) diz que existem erros e me pergunta se desejo prosseguir, entretanto a própria IDE nao mostra esses erros no código.

import java.util.Scanner;
public class agendafatec {
	public static void main(String args[])
	{
	  String name = "",email = "",telefone = "";
	  Scanner input = new Scanner(System.in);
	  String resp = "0";
	  contatos cont = new contatos();
	  do{
	  System.out.printf(" :. Seja bem vindo a agenda 0.1 .:");
	  System.out.printf("\n* 1     Incluir Contato");
	  System.out.printf("\n* 2     Alterar Contato");
	  System.out.printf("\n* 3     Pesquisar Contato");
	  System.out.printf("\n* 4     Excluir Contato");
	  System.out.printf("\n* 5         Sair\n");
	  resp = input.nextLine();
	  if(resp == "1");
	  {
	  System.out.printf("Digite o nome do contato.:");
	  name = input.nextLine();	  
	  cont.AdicionaNome(name);
	  System.out.println("Foi adicionado o nome: "+name);    
	  System.out.printf("Digite o email do contato.:");
	  email = input.nextLine();
	  cont.AdicionaEmail(email);
	  System.out.println("Foi adicionado o email: "+email); 
	  System.out.printf("Digite o numero do contato com DDD no formato (00 0000 - 0000).:");
	  telefone = input.nextLine();	  
	  cont.AdicionaTelefone(telefone);
	  System.out.println("Foi adicionado o numero: "+telefone); 
	  }
	  if(resp == "3");
	  {

	  
	  }  
	  }while (!"5".equals(resp));
	  System.out.printf("Obrigado por usar a agenda");
	  		
	}

}
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

 
public class contatos {    

   String nome,telefone,email,valor;
   int index=0;
       
   ArrayList<String>Cont = new ArrayList<String>();    
   ArrayList<String>Email = new ArrayList<String>();    
   ArrayList<String>Telefone = new ArrayList<String>();    
       
public void AdicionaNome(String name)      
   {  
	Cont.add(name);    
   }
public void AdicionaEmail(String email){
	Email.add(email);  
}
public void AdicionaTelefone(String telefone)
    {       
	Telefone.add(telefone); 
    }

public void transfereNome(String name)
{
	valor = "Nome do Contato : "+name;
	gravar();
}
public void transfereEmail(String email)
{   
	valor = "Email do Contato" +email;
	gravar();
}
public void transfereTelefone(String telefone)
{
	valor ="Telefone do Contato :" +telefone;
	gravar();
}
public void gravar() {
    try{
  	  
     	 File file = new File("contatos.txt");
     	 FileWriter writer = new FileWriter(file,true);
     	 BufferedWriter buffer = new BufferedWriter(writer);     	 
     	 
       buffer.write(valor); 
       buffer.newLine();
       buffer.newLine();
       buffer.close();    
   }    
   catch(IOException e){    
      e.printStackTrace();     
      System.out.println("Acabei de escrever no arquivo");  
      
      System.exit(0);  

}


	
}
            

        
   }
Criado 1 de dezembro de 2011
Ultima resposta 5 de dez. de 2011
Respostas 7
Participantes 5