Não consigo gravar de LinkedList para .TXT, podem me ajudar?

7 respostas
Jue

Pessoal, alguém pode me ajudar?
Estou tentando gravar os dados de uma LinkedList para um .txt, procurando usar o código como o abaixo, só não entendi que parâmetro devo colocar em newBufferedReader. Supondo- se que a LinkedList já tenha sido preenchida através de outro método, o código para gravar é o seguinte:

import java.io.;
import java.util.
;

public class Arquivo {

LinkedList lista = new LInkedList();

File arq = new File(arquivo.txt);

public void grava(){
try {

BufferedReader in = new BufferedReader (/* ? */);

BufferedWriter out = new BufferedWriter(new FileWriter(arq));

Iterator i = lista.iterator();

while (i.hasnext()) {
String s = i.toString();
out.write(s);
out.newLine();
}

in.close();
out.close();
}

// trata exceção de arquivo inexistente

catch (FileNotFoundException e1) {

System.out.println(Arquivo não encontrado + e1);

}

// outras exceções

catch (IOException e2) {

System.out.println("Ocorreu a exceção - " + e2);

}

}
public static void main(String args[]) {

Arquivo a = new Arquivo();

a.grava();

}

Se algo mais estiver errado, por favor me corrijam. Desde já obrigado.

7 Respostas

_fs

A variável não é utilizada, pode remover a linha e a “in.close();”.

Jue

Valeu, Lipe, vou tentar.

Jue

O código que referenciei acima só está apagando o conteúdo do arquivo, não gravando o conteúdo da LinkedList.

T

Sua LinkedList está vazia.

Jue

O código que postei é apenas uma parte do todo. Suponha que a lista já tenha sido preenchida, isso eu consegui fazer. Só que para gravá-la no arquivo, acontece isso: o arquivo é apagado, mas não é gravado nada nele.

Mantu

Engraçado esse trecho… Eu tenho a nítida impressão que este trecho, além de ficar em loop infinito (pois nunca é dado “next()” no “i”), vc está escrevendo apenas o “toString()” do i, e não do elemento guardado no “i”…
Não sei se pode ser esse o problema, mas tente trocar por algo assim:

while (i.hasNext()) {
   String s = i.next().toString();
   out.write(s);
   out.newLine();
}
Jue

Consegui resolver esse problema usando PrintWriter, da seguinte forma:

public void gravaArquivo() throws IOException{
    PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(contatos)));
//contatos é a variável new File(“arquivo.txt”)

Iterator i = lista.iterator();

while (i.hasNext()) {

String s = i.next().toString();

writer.println(s);

}

writer.close();

}

Valeu, pessoal!

Criado 10 de outubro de 2006
Ultima resposta 15 de out. de 2006
Respostas 7
Participantes 4