Por que nao grava no arquivo?[RESOLVIDO]

Olá pessoal, tudo blz???

Fiz o código abaixo e supostamente ele deveria escrever o que é digitado no teclado no arquivo gravar.txt…mas isso não acontece…nao mostra erro nenhum, consigo escrever, mas nao grava no arquivo…alguém tem uma idéia do que seria?
Obrigado

[code]import java.io.*;
public class Arquivos3 {

	public static void main (String[] args){
		digitarTeclado();
	}
	
	public static void digitarTeclado(){
		try{
		FileWriter o = new FileWriter("d:\Gravar.txt");
		String linha;
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader in = new BufferedReader(isr);
		PrintWriter out = new PrintWriter(o);
		System.out.println("Digite algo no console e tecle enter");
		try{
		while ((linha = in.readLine()) != null ){
			System.out.println ("Linha: " + linha);
			out.println(linha);
		}
		out.flush();
		in.close();
		o.close();
		}catch (Exception e){
			e.getMessage();
		}
		}catch (IOException e){
			System.out.println(e.getMessage());
		}
		
	}

}
[/code]

Provavelmente vc deve ter matado o programa… ao invés de ele ter terminado normalmente…

Nao passando nos flush

Será isso?

Fiz uma pequena alteração que agora acredito que funcione.

O problema é que enquanto você não realizar um flush() ou close() do stream, essa informação não será gravada.

Portanto, coloquei uma condição de saída do seu loop (-1), o que possibilitará fechar o stream e gravar os dados no arquivo.

public static void main(String[] args) {
        digitarTeclado();
    }

    public static void digitarTeclado() {
        try {
            FileWriter o = new FileWriter("c:\Gravar.txt");
            String linha;
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader in = new BufferedReader(isr);
            PrintWriter out = new PrintWriter(o);
            System.out.println("Digite algo no console e tecle enter");
            try {
                while (!(linha = in.readLine()).equals("-1")) {
                    System.out.println("Linha: " + linha);
                    out.println(linha);
                }
                out.flush();
                in.close();
                o.close();
            } catch (Exception e) {
                e.getMessage();
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

Abracos

[quote=rogelgarcia]Provavelmente vc deve ter matado o programa… ao invés de ele ter terminado normalmente…

Nao passando nos flush

Será isso?[/quote]

Entao, eu acho que eu nem saio do programa…
Mas executei a dica do alexm e ele agora termina, mas continua nao gravando…
Nao estou conseguindo :?

Quer dizer…ele está granvando sim…mas grava “-1”…a condiçao de saída do loop…mas qq outra coisa ele nao grava…

public static void main(String[] args) {
        digitarTeclado();
    }

    public static void digitarTeclado() {
        try {
            FileWriter o = new FileWriter("c:\Gravar.txt");
            String linha;
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader in = new BufferedReader(isr);
            PrintWriter out = new PrintWriter(o);
            System.out.println("Digite algo no console e tecle enter");
            try {
                while (!(linha = in.readLine()).equals("-1")) { 
                    System.out.println("Linha: " + linha);
                    out.println(linha);
                }
                out.flush();
                in.close();
                o.close();
            } catch (Exception e) {
               System.out.println(e.getMessage()); <<<<<<
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

Pode ser que tenha dado excecao… mude a linha e veja se funciona…

Para vc ver o resultado no arquivo ao inserir cada linha faça essa alteracao:

public static void main(String[] args) {
        digitarTeclado();
    }

    public static void digitarTeclado() {
        try {
            FileWriter o = new FileWriter("c:\Gravar.txt");
            String linha;
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader in = new BufferedReader(isr);
            PrintWriter out = new PrintWriter(o);
            System.out.println("Digite algo no console e tecle enter");
            try {
                while (!(linha = in.readLine()).equals("-1")) { 
                    System.out.println("Linha: " + linha);
                    out.println(linha);
                    out.flush(); <<<<<<<<<<<<<<<<<
                }
                //out.flush(); <<<<<<<<
                in.close();
                o.close();
            } catch (Exception e) {
               System.out.println(e.getMessage()); 
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }

Entendi rogel…mas ainda nao grava com essa modificaçao…

while (!(linha = in.readLine()).equals("-1")) {   

Verifique essa linha se está correta

Testei o programa aqui… tá funcionando…

package snippet;

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Snippet {
	public static void main(String[] args) {
		digitarTeclado();
	}

	public static void digitarTeclado() {
		try {
			FileWriter o = new FileWriter("Gravar.txt");
			String linha;
			InputStreamReader isr = new InputStreamReader(System.in);
			BufferedReader in = new BufferedReader(isr);
			PrintWriter out = new PrintWriter(o);
			System.out.println("Digite algo no console e tecle enter");
			try {
				while (!(linha = in.readLine()).equals("-1")) {
					System.out.println("Linha: " + linha);
					out.println(linha);
					out.flush();
				}
				// out.flush(); <<<<<<<<
				in.close();
				o.close();
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}
}

Perfeito rogel!!! Agora eu consegui!

obrigado pela sua ajuda!!! :smiley:

abs