[RESOLVIDO] duvida escrever dados em arquivo

4 respostas
fabiomariner
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:
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();
		}
		
		
	}

}

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?

4 Respostas

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.

E

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.

fabiomariner

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.

caraka… era isso, esqueci de liberar os recursos do sistema operacional chamando close(). Obrigado pela ajuda, abraço.

fabiomariner

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.

agora q vi sua postagem, vc tem razão em sua afirmação, obrigado pela ajuda.

Criado 19 de março de 2013
Ultima resposta 19 de mar. de 2013
Respostas 4
Participantes 3