2
respostas

Gente, quando rodo esse programa ele não salva no arquivo. O arquivo gerado fica só vazio

package br.com.alura.java.io.teste;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;


public class TesteCopiarArquivo {

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

        InputStream fis = System.in; //new FileInputStream("poema.txt");
        Reader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);

        OutputStream fos = new FileOutputStream("poema2.txt");
        Writer osw = new OutputStreamWriter(fos);
        BufferedWriter bw = new BufferedWriter(osw);


        String linha = br.readLine();

        while(linha != null) {
        //System.out.println(linha);
          bw.write(linha);
          bw.newLine();
          linha = br.readLine();

        }

        br.close();
        bw.close();    



    }

}
2 respostas

Olá Milton, o seu programa está funcionando, mas você precisa fazer com que a execução dele pare, clicando no botão de Stop do console do Eclipse, assim ele irá salvar as alterações no arquivo.

Para não ter a necessidade de ter que parar o programa manualmente, no laço while, você pode criar uma nova condição, que a linha, além de ser diferente de null, também não deve ser vazia. Faça isso utilizando a negativa do método isEmpty():

 while(linha != null && !linha.isEmpty()) {
    //System.out.println(linha);
    bw.write(linha);
    bw.newLine();
    linha = br.readLine();
}

Boa noite Milton, você conseguiu resolver o seu problema?