Dificuldade para usar printwriter para gravar objetos em arquivos

preciso gravar alguns objetos em arquivos usando o printwriter, e depois preciso pegar estes arquivos no arquivo que criei e mostrar
mas nao estou conseguindo .
alguem pode me ajudar.

dá uma lida aqui

http://www.guj.com.br/articles/13

abrxx

Com o PrintWriter você não vai conseguir gravar objetos mesmo. Você tem que usar um ObjectOuputStream envolvendo um FileOutputStream. Além disso, a classe do seu objeto deve implementar a interface Serializable.

Olá gabriel7898!

Veja um exemplo bem simples que criei:

Classe que será serializada. Para que isso seja possível, ela deve implementar a interface Serializable (que é conhecida como interface marcadora, pois não há métodos a serem implementados). Veja que o atributo endereco está marcado com transient. Isso diz ao Java que esse membro não será serializado.

import java.io.Serializable;


public class Aluno implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String nome;
	private transient String endereco;
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getNome() {
		return nome;
	}
	
	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
}

Classe que serializa e deserializa:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


public class App {
	
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		
		Aluno a = new Aluno();
		a.setNome("GUJ");
		a.setEndereco("Rua xyz");
		
		serializa(a);
		Aluno deserializado = (Aluno) deserializa();
		System.out.println("Nome: " + deserializado.getNome());
		System.out.println("Endereco: " + deserializado.getEndereco());
	}
	
	private static void serializa(Aluno a) throws IOException {
		//no construtor do FileOutputStream estou passando o  
        //arquivo onde serão gravados os objetos  
       	File f = new File("obj.ser");
		FileOutputStream fos = new FileOutputStream(f);
		ObjectOutputStream oos = new ObjectOutputStream(fos);
		oos.writeObject(a);
	}
	
	private static Aluno deserializa() throws IOException, ClassNotFoundException {
		File f = new File("obj.ser");
		FileInputStream fis = new FileInputStream(f);
		ObjectInputStream oos = new ObjectInputStream(fis);
		Aluno a = (Aluno) oos.readObject();
		return a;
	}
}

Abraços!

Oi, gabriel7898.

Então, fiz um exemplo bem simples utilizando o PrintWriter e depois lendo o arquivo e exibindo o que havia dentro dele no console. Dá uma olhada:

public class Pessoa {
	private String nome;
	private int idade;
	
	public Pessoa(String nome, int idade){
		setNome(nome);
		setIdade(idade);
	}
	
	public String getNome(){
		return nome;
	}
	
	public int getIdade(){ 
		return idade;
	}
	
	public void setNome(String nome) {
		this.nome = nome;	
	}
	
	public void setIdade(int idade){
		this.idade = idade;
	}
	
	public String toString(){
		return "Nome: " + nome + " | Idade: " + idade+ "\n";
	}

E aqui a parte onde ocorre a leitura e gravação do arquivo:

[code]import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class Exemplo {

public static void main(String[] args) throws IOException{

    Pessoa pessoa = new Pessoa("Gabriel", 17);
	
    //Armazena descrição da pessoa que foi feita no toString da classe Pessoa ao arquivo.
    PrintWriter p = new PrintWriter(new FileWriter("teste.txt"));
	String descricao = pessoa.toString();
	p.println(descricao);
  	p.close();
  	
  	//Lê o arquivo acima até o fim e exibe no console
  	BufferedReader in = new BufferedReader(new FileReader("teste.txt"));  
  	String line;  
      while((line = in.readLine())!=null) {  
    	  System.out.println(line);
      }
}

}
[/code]

muito obrigado foi muito utillllllll
vlwwwww :smiley: