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

System.in X arquivo como parâmetro

No meu código, ao utilizar arquivo como parâmetro tudo correu como o esperado, mas ao usar o teclado como entrada a coisa desandou e não gravou nada no arquivo de saída

Scanner sc = new Scanner(System.in);

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

        while(sc.hasNextLine()){
            String frase = sc.nextLine();
            bw.write(frase);
            bw.newLine();
        }

        bw.close();
        sc.close();

Alguém sabe onde estou errando?

2 respostas
solução!

Paulo, ele só vai gravar algo no arquivo quando o buffer estiver "cheio" e ele precisar fazer um "flush" ou quando ele encontrar o close(). Se você der um control+c, ele não chegará no close e não gravará o arquivo. Você pode ou fazer bw.flush() dentro do laço como última instrução ou então digitar CONTROL+D para terminar a leitura do teclado.

Valeu xará! 0.< Matou a charada!