[RESOLVIDO] duvida escrever dados em arquivo

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.