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!!! 
abs