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

Dúvida no Ex. 8 da Aula 4 - Pacote java.io

Utilizei o codigo apresentado na solução e o resultado foi que se no console escrevo uma linha e depois duas linhas abaixo outra ele somente copia a primeira linha, qual seria a solução pra isso

5 respostas

Oi Antônio, só pra desencargo de consciência posta a sua classe JavaIO, e além disso você verificou essa questão:

Veja que, como estamos usando o método hasNextLine na condição do while, ele sempre vai ficar esperando que uma nova instrução seja digitada no terminal, portanto nosso código ficará em looping até que você clique em stop no Eclipse ou um sinal de final de stream seja enviado. Esse sinal é o famoso EOF, isto é, end of file. No Linux/Mac/Solaris/Unix você faz isso com o ctrl + D. No Windows, use o ctrl + Z.

Aguardo seu retorno.

public class TestaJavaIO {
    public static void main(String[] args) throws IOException {
   Scanner entrada = new Scanner(System.in);

            PrintStream saida = new PrintStream(new FileOutputStream("saidaJava.txt"));

            while (entrada.hasNextLine()) {

                saida.println(entrada.nextLine());

 }
            saida.close();
            entrada.close();
}

Entao minha duvida é a seguinte por exemplo se eu digito

teste

linha 1

linha 2

linha 3

no meu arquivo saidaJava.txt so me aparece

teste

linha1

linha2

sendo que na linha 3 nao existe nextLine, eu estava tentando fazer algo como :

 while (entrada.hasNextLine()) {

                saida.println(entrada.nextLine());            }

            if (entrada.hasNextLine()!=true){
                saida.println(entrada);
            }
            saida.close();
            entrada.close();
        }}

porém nao sei o que utilizar no saida.println(entrada.ALGUMACOISA);

Oi Antônio eu editei seu post, sempre que for postar código java, clica em {}inserir código e posta entre as aspas, o código acima funciona perfeitamente, e até seu outro código que faz um

if (entrada.hasNextLine()!=true){
                saida.println(entrada);
            }

tmb funciona perfeitamente, acontece o seguinte primeiramente feche o arquivo saidaJava.txt. Depois lá no Eclipse no Console clique no botão vermelho terminate, logo em seguida clique em Remove All Terminated Launches. OK feito isso Clique na sua classe TestaJavaIO e rode. Quando rodar no console escreva e dê Enter escreva o que quiser, após ter escrito abra o arquivo saidaJava.txt, tá igual ao que você escreveu ?

Obs.: Se vc quiser escrever mais alguma coisa no console escreva mas para ver no arquivo que já tá aberto feche o arquivo não salve e abra ele de novo. Deve ser isso que esteja confundindo você. Ajudei ?

Maison ajudou muito, eu entendi a lógica, o unico problema é que esse codigo obriga o usuario a dar um enter no final do texto, como fariamos utilizando a classe scanner para não precisar desse enter no final digo, no fim da frase na mesma linha dar um ctrl+z e aparecer o texto completo

um abraço

solução!

Verdade Antônio, Com a classe Scanner realmente teríamos que inserir um Enter.