Dúvida quanto as classes FileWriter/PrintWriter

Antes de mais nada, quero me apresentar aqui, já que esse é meu primeiro tópico e provavelmente virão muito mais no futuro. xD

Meu nome é Israel, estou no segundo semestre de Ciencias da Computação, faço um curso Sequencial em Java nos sabados e… gosto de pizza. @.@

Mas bem vou à minha dúvida:

Estou estudando essa parte do java sobre fluxos de entrada e saida, escritas em arquivos e afins, então fiquei com uma dúvida. A classe FileWriter escreve caracteres num arquivo, e se vc passa uma String para o método write() dela ela tb escreve os caracteres, tudo bem. Agora temos a classe PrintWriter que com o método print() pega uma String e tb passa para caracteres em um arquivo.

Minha dúvida é: elas não são iguais afinal? Pra que eu uso uma e pra que eu uso outra? E porque o construtor da PrintWriter pode aceitar um Writer como parametro? O que ele faz com esse writer? Eu tb posso passar um fluxo de saida pro construtor… o que eu posso fazer com isso?

Bom é isso, qualquer ajuda para clariar minha mente confusa é bem vinda! Obrigado!

Israel

1 curtida

a diferença entre as classes é que PrintWriter é mais eficiente que FileWriter, os metodos de PrintWriter por exemplo o println ele escreve e ja pula um linha… outra coisa que a partir do java 1.5 vc PrintWriter aceita tanto um File quanto um String em seu construtor… você usa a que achar melhor… porem a + eficiente concerteza vai diminuir umas linhas de codigo e facilitar a legibilidade. Veja no exemplo abaixo:

import java.io.*;
class Arq{
public static void main(String args[]){
File  f =new File("arq.txt");
try{

FileWriter fw = new FileWriter(f);
fw.write("camilo");
fw.write("\nlopes");
fw.flush();fw.close();
}catch(Exception e){}
try{
PrintWriter pw = new PrintWriter("arq2.txt");
pw.println("lopes");
pw.println("java");
pw.flush();
pw.close();
}catch(Exception e){}

bom… fica a creterio do programador… eu mesmo acho PrintWriter mais eficiente que a FileWriter.

:smiley: