PrintWriter vs FileWriter en Java

PrintWriter et FileWriter en Java sont-ils les mêmes et peu importe lequel utiliser? Jusqu'à présent, j'ai utilisé les deux parce que leurs résultats sont les mêmes. S'il y a des cas particuliers où il est logique de préférer l'un sur l'autre?

public static void main(String[] args) {

    File fpw = new File("printwriter.txt");
    File fwp = new File("filewriter.txt");
    try {
        PrintWriter pw = new PrintWriter(fpw);
        FileWriter fw = new FileWriter(fwp);
        pw.write("printwriter textrn");
        fw.write("filewriter textrn");
        pw.close();
        fw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
31
demandé sur ough 2011-04-23 00:52:11

7 réponses

Selon coderanch.com si nous combinons les réponses que nous obtenons:

FileWriter est la représentation de io. Cela signifie qu'il peut être utilisé pour écrire des caractères. Le FileWriter interne utiliserait le jeu de caractères par défaut du système d'exploitation sous-jacent et convertirait les caractères en octets et l'écrirait sur le disque.

PrintWriter & FileWriter.

Similitudes

  1. les deux s'étendent de L'écrivain.
  2. les deux sont des caractères les classes de représentation, c'est-à-dire qu'elles fonctionnent avec des caractères et les convertissent en octets en utilisant le jeu de caractères par défaut.

Différences

  1. FileWriter lance IOException en cas d'échec de L'IO, ceci est une exception cochée.
  2. aucune des méthodes PrintWriter ne lance IOException, au lieu de cela elles mettent un drapeau booléen qui peut être obtenu en utilisant checkError().
  3. PrintWriter a sur le constructeur optionnel que vous pouvez utiliser pour activer auto-rinçage lorsque des méthodes spécifiques sont appelés. Aucune option de ce type n'existe dans FileWriter.
  4. lors de l'écriture vers des fichiers, FileWriter a un constructeur optionnel qui lui permet d'ajouter au fichier existant lorsque la méthode "write()" est appelée.

différence entre PrintStream et OutputStream: semblable à l'explication ci-dessus, il suffit de remplacer le caractère par byte.

PrintWriter a les méthodes suivantes:

close()
flush()
format()
printf()
print()
println()
write()

et les constructeurs sont :

File (as of Java 5)
String (as of Java 5)
OutputStream
Writer

alors que FileWriter ayant les méthodes suivantes:

close()
flush()
write()

et les constructeurs sont :

File
String 

lien: http://www.coderanch.com/t/418148/java-programmer-SCJP/certification/Information-PrintWriter-FileWriter

26
répondu kamaci 2013-12-21 09:16:34

Deux FileOutputStream en interne:

public PrintWriter(File file) throws FileNotFoundException {
this(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file))),
     false);
}



public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}

mais la principale différence est que PrintWriter offre des méthodes spéciales:

imprime des représentations formatées de les objets d'un texte-flux de sortie. Ce la classe implémente toutes les impressions méthodes trouvées dans PrintStream. Il n' ne pas contenir de méthodes pour écrire à l'état brut octets, pour lesquels un programme devrait utiliser non codée flux d'octets.

contrairement à la classe PrintStream, si automatique le rinçage est activé, il sera être fait seulement quand l'un des println, printf, ou les méthodes de format sont invoquées, plutôt que chaque fois qu'une nouvelle ligne le caractère se trouve être sortie. Ils les méthodes utilisent la propre notion de la plateforme du séparateur de ligne plutôt que le caractère de saut de ligne.

8
répondu Sean Patrick Floyd 2011-04-22 20:56:24

PrintWriter a un concept différent de gestion des erreurs. Vous devez appeler checkError() au lieu d'utiliser des blocs try/catch.

5
répondu Ted Hopp 2011-04-22 20:56:39

PrintWriter ne pas jeter IOException.Vous devriez appeler checkError() méthode à cette fin.

3
répondu sergionni 2011-04-22 20:58:03

java.io.PrintWriter dans Java5+ permis pour une méthode de commodité / constructeur qui écrit au fichier. À partir de la Javadoc;

crée un nouveau PrintWriter, sans rinçage de ligne automatique, avec le fichier spécifié. Ce constructeur pratique crée le nécessaire OutputStreamWriter intermédiaire, qui encodera les caractères en utilisant le charset par défaut pour cette instance de la machine virtuelle Java.

3
répondu Koekiebox 2011-04-22 20:58:32

juste pour donner plus d'infos liées à la CHASSE et à Proximité menthod liées à FileOutputStream

flush() ---s'assure juste que toutes les données tamponnées sont écrites sur le disque complètement purgé et prêtes à écrire à nouveau au flux (ou à l'écrivain) après.

close () - - - - - efface les données et ferme les poignées de fichiers, les sockets ou n'importe quoi d'autre.Maintenant la connexion a été perdue et vous ne pouvez rien écrire à outputStream.

0
répondu satender 2015-05-05 12:45:53

le fait que java.io.FileWriter s'appuie sur le codage de caractères par défaut de la plate-forme le rend plutôt inutile pour moi. Vous ne devez jamais supposer quelque chose au sujet de l'environnement où votre application sera déployée.

0
répondu roland 2017-07-02 10:22:58