Escrevendo e lendo arquivos

Tipo, ta dando o seguinte Exception logo depois que entro com os dados e chama o método Arquivo que escreve no arquivo:

Exception in thread “main” java.lang.NullPointerException
at Arquivo.write(Arquivo.java:29)
at Prova.main(Prova.java:46)

Essa Exception é quando ela acessa alguma coisa ainda nula, mais num acho oq é. HELP!!!

Segue o código:

//Principal
Arq.Arquivo(“entrada.txt”);
Arq.write(ArrayItens[c]);

//Classe Arquivo

public class Arquivo {
private String NomeArquivo;
private PrintWriter write;
//private BufferedReader reader;

public void Arquivo(String nameFile){
this.NomeArquivo = NomeArquivo;
}

public void write(ItensEstoque Itens){
try {
write = new PrintWriter(new FileOutputStream(NomeArquivo));
write.println("–> Codigo : " + Itens.getCod());
write.println("–> Nome : " + Itens.getNome());
write.println("–> Descrição : " + Itens.getDesc());
write.println("–> Nivel Atual : " + Itens.getNivelAtual());
write.println("–> Nivel Minimo : " + Itens.getNivelMin());
write.println("–> Preco : " + Itens.getPreco());
write.close();
}
catch (FileNotFoundException e){
System.out.println(“Arquivo não encontrado !!!”);
}
finally{
write.close();
}
}
}

public void Arquivo(String nameFile){ 
this.NomeArquivo = NomeArquivo; 
} 

o código acima está errado, não seria
this.NomeArquivo = nameFile; :wink:

Qual a melhor forma que voce acha que eu dave escrever no arquivo afim de facilitar a leitura depois, ou seja pegar apenas o que eu quero.

Eu pensei em escrever um linha assim:
1;Nome1;Descricao1;NivelAtual1;NivelMinimo1;Preco1;
2;Nome2;Descricao2;NivelAtual2;NivelMinimo2;Preco2;

Como eu faria para pegar cod, nome, descricao e retornar tudo como um objeto ?

Ou tem outra forma melhor de fazer ???

Poxa, não tem ninguem que pode me ajudar ???

Alowww…!!!

Olá, se vc vai manter a formatação do arquivo assim, vc poderia usar uma BufferedReader para ler linha a linha e depois usar uma StringTokenizer para dividir a linha. Depois, vc percorreria os tokens, e como vc sabe exatamente o que cada um deles representa, crie os objetos desejados com eles. Espero que isso ajude.

Até mais.

Olá pessoal,
Estou usando a dica do ricardolecheta para escrever e ler um objeto no arquivo texto:

ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("file.txt"));
out.writeObject(meuObjeto);
out.close();


ObjectInputStream out = new ObjectOutputStream(new FileInputStream("file.txt"));
itensEstoque item = out.readObject(meuObjeto);
out.close();

porém dessa maneira ele sempre sobrescreve o objeto, minha intenção é gravar varios objetos no mesmo arquivo.
Como faço isso ? e para recuperar essa lista de objetos utilizo o readLine() ?
valeu

no construtor de FileOutputStream vc pode passar um boolean=true para fazer append no arquivo, senão ele sempre cria um novo :slight_smile:

nesse caso ele esta lendo um só !
até fiz assim e funcionou,
estou com difuculdades em fazer ele percorrer o arquivo e ir listando.
Quando eu usava o BufferedReader
eu usava o readline(),

mas no caso de ObjectInputStream acho que é de outra maneira.

Fiz desse jeito e não dei certo.

Para ler, vc pode usar ObjectInputStream, FileInputStream.

[code] ObjectInputStream input =
new ObjectInputStream(
new FileInputStream(new File(path)));

		Pessoa person = (Pessoa) input.readObject();

input.close();[/code]

try{ while(true) { //le os arquivos } } catch(EOFException eof) { input.close(); } ?