Impressão de Arquivo

11 respostas
T

Oi gente blz?

Estou com um problema poderiam me ajudar?

Seguinte, tenho uma classe e de impressão de arquivo que recebe um ou vários arraylists e imprime da seguinte maneira:

PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(pathFile, false), “Windows-1252”)));

aí uso um for que carrega cada elemento do array e vo imprimindo no arquivo seguindo o método print().

Ele funciona, porem se eu jogo mais de um array como parâmetro, ele nao exporta… sempre exporta apenas um array. Saberiam me dizer por que?

Valeu gente!

11 Respostas

M

Como está o seu método?

T

recebe um list:

public void exportAlt (List p) throws IOException {

}

Só que varias vezes ele é chamado é só exporta para o arquivo na primeira chamada.

Valeu!

smarcelo_br

É uma lista de ArrayLists? Você precisa de pelo mentos 2 'for’s. Um para percorrer a lista de ArrayList e outro para percorrer cada elemento do array. Como é o código onde você faz o ‘for’ percorrendo a lista?

[]s,
Sergio M C Figueiredo
blog

T

Sabem me dizer gente?

M

Poste o método todo, e não somente a assinatura, pois assim fica difícil visualizar o problema…

T

public void exportAlt (List p) throws IOException {

try {    
       
       PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(pathFile, false), "Windows-1252")));
       for (int i = 0; i < p.size(); ++i) {
           System.out.println(p.get(i));
           pw.print(p.get (i));

   }
   
   pw.close();
 
   } catch (IOException ex) {
        //Logger.getLogger(Write_Output_File.class.getName()).log(Level.SEVERE, null, ex);
   }

}

M

Use as tags ‘code’ sempre que postar seu código, por favor.

Perceba que seu método exporta uma única lista, sempre para o mesmo arquivo.

Ou você cria um arquivo para cada List (por exemplo, adicionando um contador no nome do arquivo - como em list-1.dat, list-2.dat e assim por diante).

Ou você recebe todas as listas que você quer gravar de uma só vez (em um array de List) e grava-o.

PS: é impressão minha ou esse tópico é duplicado?

T

Ok, neste caso como receberia todas as listas?

Valeu!

M

Opa…

Não tinha visto seu código direito. Eu pensei que você exportava a lista (serialização) e não o seu conteúdo.

No seu caso, acho que apenas mudando o parâmetro no construtor do FileOutputStream para true (append) resolve.

T

Entendi da certo mesmo, o engraçado é q este parâmetro estava sendo utilizado como “false” para sobrescrever o arquivo a cada execução, por comodidade mesmo. O problema é que agora se eu coloco “true” ele sobrescreve o arquivo, porém com o primeiro array list colocado no arquivo apenas.
Acredito que tenho que mudar a forma como exporto… o q acham??alguma idéia?

M

Esse boolean é a flag do ‘append’. Se estiver true, ele adiciona ao final do arquivo ao invés de sobreescrever. Você poderia ter uma flag (boolean) na sua classe.

Você usa-a para criar o FileOutputStream. Esta flag começa como false (ou seja, na primeira chamada do programa vai ser false) e logo após a criação do FileOutputStream é setada para true.

Entendeu? Será que ajudou ou piorou tudo? Qualquer coisa, poste aqui.

Criado 23 de dezembro de 2009
Ultima resposta 23 de dez. de 2009
Respostas 11
Participantes 3