olá galera, me deparei com um tópico no livro da Kathy SCJP5: Combinando Classes de E/S (pág. 251), fui implementar pra testar o funcionamento e não consegui gravar os dados no arquivo. Abaixo o código:
[code]package br.com.capitulo6;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class TesteFile {
public static void main(String[] args) {
try {
File file = new File("fileWrite3.txt");
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println("Fabio");
pw.println("alves");
pw.write("testeFBI");
} catch (IOException e) {
e.printStackTrace();
}
try {
File file = new File("fileWrite3.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String data = br.readLine();
System.out.println(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
[/code]
depois isolei o bloco try/catch que faz a escrita no arquivo, digitei alguns caracteres manualmente no arquivo criado, e executei somente o bloco q faz a leitura e consegui o resultado esperado, ou seja, o arquivo é criado, mas nada é gravado nele.
alguém pode me dizer o q está errado? pode ser algo sobre eu estar usando o compilador do Java 1.6?
Faltou dar close().
Se for Java 7, faça assim:
public class TesteFile {
public static void main(String[] args) {
try (
FileWriter fw = new FileWriter(new File("fileWrite3.txt"));
PrintWriter pw = new PrintWriter(fw)
) {
pw.println("Fabio");
pw.println("alves");
pw.write("testeFBI");
} catch (IOException e) {
e.printStackTrace();
}
Caso contrário, chame pw.close() e fw.close() ao final do método.
Tudo que você abriu, feche.
Fechar um arquivo que está sendo escrito é necessário para efetivar a gravação de alguns bytes que possam estar em um cache do sistema operacional ou do Java.
[quote=ViniGodoy]Faltou dar close().
Se for Java 7, faça assim:
public class TesteFile {
public static void main(String[] args) {
try (
FileWriter fw = new FileWriter(new File("fileWrite3.txt"));
PrintWriter pw = new PrintWriter(fw)
) {
pw.println("Fabio");
pw.println("alves");
pw.write("testeFBI");
} catch (IOException e) {
e.printStackTrace();
}
Caso contrário, chame pw.close() e fw.close() ao final do método.[/quote]
caraka… era isso, esqueci de liberar os recursos do sistema operacional chamando close(). Obrigado pela ajuda, abraço.
[quote=entanglement]Tudo que você abriu, feche.
Fechar um arquivo que está sendo escrito é necessário para efetivar a gravação de alguns bytes que possam estar em um cache do sistema operacional ou do Java. [/quote]
agora q vi sua postagem, vc tem razão em sua afirmação, obrigado pela ajuda.