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

Editor de textos - Aula 4-Pacote java.io

Por volta dos 7 minutos da aula 4 Pacotes java.io, o instrutor simula um editor de textos colocando na entrada de fluxo System.in E em sua saída de fluxos um FileOutputStream("saida.txt") Faço de forma igual, porem quando eu coloco meu InputStream is = System.in; ele não faz a escrita no arquivo. A escruta no arquivo só dá certo quando na entrada eu coloco para ele ler de um arquivo e não da entrada padrão. Apenas quando leio de um arquivo dessa forma

InputStream is = new FileInputStream("texto.txt");

Não faço ideia de algum possivel problema que não consigo fazer a escrita no arquivo quando a entrada é a entrada padrão com o System.in. Estou usando a jdk1.8.0_40. Meu código

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.Writer;

public class IORevisao001 {
    public static void main(String[] args) {
        // int quantidadeCaracteres = 0;

        // ------------ENTRADA LEITURA (IN)
        try {
            //InputStream is = new FileInputStream("leitura.txt");
            InputStream is = System.in;
            InputStreamReader isr = new InputStreamReader(is);

            // while (true) {
            // int bytesLidos = is.read();
            // if (bytesLidos == -1)
            // break;
            // System.out.println("Byte lido = " + bytesLidos);
            // quantidadeCaracteres++;
            // }
            BufferedReader br = new BufferedReader(isr);
            // while (true) {
            // String linha = br.readLine();
            // if (linha == null)
            // break;
            // System.out.println(linha);
            // }

            // -----------------SAIDA ( OUT)
            OutputStream os = new FileOutputStream("saidaRevisao.txt");
            //OutputStream os = System.out;
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);

            String linha = br.readLine();
            while (linha != null) {
                //System.out.println(linha);
                // bw.write(linha);
                bw.append(linha);
                bw.newLine();
                // os.write(is.read());
                // osw.write(linha);
                // osw.append(linha);

                linha = br.readLine();
            }
            bw.close();
            br.close();

        } catch (FileNotFoundException e) {
            System.out.println("Arquivo não encontrado!");
        } catch (IOException e) {
            System.out.println(e);
        }

        // System.out.println("Quantidade de bytes lidos " +
        // quantidadeCaracteres);
    }
}
2 respostas
solução!

Oi Daniel,

Rodei o seu código aqui e funcionou normalmente.

Você deve rodar o main, e então ir digitando as palavras na aba console do eclipse. Sempre que você der Enter no console, ele vai pegar a linha e escrever no arquivo.

Para encerrar o programa você deve apertar ctrl + d ou ctrl + z, dependendo do seu sistema operacional, que essa tecla serve para enviar o comando de End Of File para o sistema e finalizar o main.

Após enviar o End Of File, dê um refresh no seu projeto no eclipse, e você verá que ele criou o arquivo e dentro do arquivo estarão as linhas digitadas no console do eclipse.

Bons estudos!

Boa tarde Rodrigo! Fiz o procedimento igual ao do instrutor, encerrando o programa apertando no botão Terminate do console (quadrado vermelho quando executando o programa). Dessa forma não funciona de forma alguma. Com sua dica de encerrar utilizando ctrl + z , encerra de forma igual, porem agora deu certo, quando termino usando o ctrl + z funciona diferente de apetando terminate. Agora me pergunto pq ao apertar termanite o camando EOF não é enviado igual acontece com o instrutor(eu uso aqui o windows 7, e o instrutor esta usando um OS X) Muito obrigado