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