Por que nao grava no arquivo?[RESOLVIDO]

9 respostas
AITech_IX

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

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());
			}
			
		}
}

9 Respostas

rogelgarcia

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

Nao passando nos flush

Será isso?

A

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

AITech_IX

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

Nao passando nos flush

Será isso?

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 :?

AITech_IX

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

rogelgarcia
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());
        }
    }
AITech_IX

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

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

Verifique essa linha se está correta

rogelgarcia

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());
		}
	}
}
AITech_IX

Perfeito rogel!!! Agora eu consegui!

obrigado pela sua ajuda!!! :smiley:

abs

Criado 28 de abril de 2010
Ultima resposta 28 de abr. de 2010
Respostas 9
Participantes 3