Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Entrada de dados pelo System.in - Java III, aula 04, Vídeo 01.

Bom dia!

Não consegui reproduzir o comportamento, explicado pelo Guilherme Silveira, por volta do minuto 07:00. Quando digito algo no console, a informação não aparece no arquivo de saída.txt.

package br.com.caelum.fj11.programa;

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

public class TestaJavaIO {

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


        InputStream is         =  System.in;
        InputStreamReader isr  = new InputStreamReader(is);
        BufferedReader br      = new BufferedReader(isr);


        OutputStream os        = new FileOutputStream("saida.txt");
        OutputStreamWriter osw = new OutputStreamWriter(os);
        BufferedWriter bw        = new BufferedWriter(osw);



        String linha = br.readLine();
        while (linha != null) {

            bw.append(linha);
            bw.newLine();
            linha = br.readLine();

        }

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

}

Desde já grato pela atenção!

Att.: Rodrigo Pereira!

7 respostas

Bom dia Rodrigo, você está parando a aplicação e atualizando o projeto para atualizar o txt?

Guilherme, Boa Tarde!

O que seria especificamente parar a aplicação?

Atenciosamente.: Rodrigo Pereira!

Estou com o mesmo problema do Rodrigo. Eu digito no console paro a aplicação e atualizo o projeto, mesmo assim não obtenho o resultado esperado.

Segue o código.

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

public class TestaJavaIO {

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

        InputStream is = System.in;// new FileInputStream("leitura.txt");
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        OutputStream os = new FileOutputStream("saida.txt");
        OutputStreamWriter osw = new OutputStreamWriter(os);
        BufferedWriter bw = new BufferedWriter(osw);

        String linha = br.readLine();
        while (linha != null) {
            bw.append(linha);
            bw.newLine();
            linha = br.readLine();
        }

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

}

No caso de imprimir direto no consolo usando o System.out funciona perfeitamente na linha 20.

Oi Rodrigo seu código está correto. O problema deve ser na hora de encerrar a entrada de dados do teclado no console. Após digitar o texto no console, pressione

Enter

para entrar no while e depois

Ctrl + z

para encerrar a entrada de dados. Atualize o projeto e abra o arquivo de saída. Se você quiser reescrever o arquivo de saída adicione true como segundo parâmetro no FileOutputStream assim:

OutputStream os = new FileOutputStream("saida.txt", true);

Isso realmente não está descrito no vídeo e resultou em muitas dúvidas semelhantes.

Caso persista alguma dúvida a respeito desse exercício ou curso pode perguntar aqui mesmo ou se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.

E ai Maiso, tudo bem? Sua dica funcionou na primeira vez, mas parou de funcionar daí em diante. Eu digito o texto, aperto Enter e depois Ctrl Z, mas só encerrou o programa na primeira vez como havia dito.

solução!

Oi Eduardo seu código tá igual do Rodrigo ? Se sim observe que toda vez que executamos o arquivo criamos o arquivo saida.txt Nessa linha:

 OutputStream os        = new FileOutputStream("saida.txt");

Logo se você quiser reescrever o arquivo de saída adicione true como segundo parâmetro no FileOutputStream assim:

OutputStream os = new FileOutputStream("saida.txt", true);

E complementando você sempre encerra com Enter , CLTR +Z Caso persista alguma dúvida a respeito desse exercício ou curso pode perguntar aqui mesmo ou se você não tiver mais nenhuma dúvida a respeito você pode marcar uma resposta como solução, finalizando assim esse tópico.Espero ter ajudado. Bons estudos.

Maison,

Problema solucionado, muito obrigado, pela ótima explicação!

Atenciosamente.: Rodrigo Pereira