7
votes

Pourquoi besoin d'un imprimeur?

Je suis vraiment confus sur le but de diverses classes IO, par exemple, si nous avons BufferedWriter, pourquoi nous avons besoin d'un imprimeur?

BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;      
while(s=br.readline()!=null) {
      PrintWriter fs = new PrintWriter(new FileWriter(file));
      fs.println(s);
}


2 commentaires

Hood, ces classes Java Io "Stream" sont vraiment déroutantes. Je peux facilement grokser InputStream, ProvityStream (juste des octets) et les versions tamponnées, mais au-delà de cela, il devient confondre.


Il y a 2 raisons principales pour lesquelles ces types de classes sont différentes: 1. Capacités de mise en mémoire tampon 2. Capacités supplémentaires dans les nouvelles versions Java, qui tentent de ne pas confondre de nouvelles méthodes existantes, mais plutôt de créer une nouvelle classe en induisant le développeur pour vérifier le développeur pour vérifier le " @since 'Javadoc Element


3 Réponses :


8
votes

Ils n'ont rien à voir les uns avec les autres. En toute vérité, j'utilise rarement imprimeur sauf pour convertir system.out temporairement. Mais de toute façon.

bufferedWriter , comme bufferedreader / bufferedInputStream / bufferedOutPutStream décore simplement l'écrivain > Avec un tampon de mémoire (vous pouvez spécifier la taille) ou accepter une valeur par défaut. Ceci est très utile lorsque vous écrivez sur des écrivains ralentis comme le réseau ou le fichier basé. (Les trucs sont commis en mémoire et seulement de manière occasionnelle à un disque, par exemple) en tamponnage en mémoire, la vitesse est considérablement augmentée - essayez de rédiger un code qui écrit un fichier de 10 Mo avec juste FileWriter , puis comparez à la Idem avec bufferedWriter enroulé autour de lui.

C'est donc bufferedWriter . Il jette quelques méthodes de commodité, mais surtout, cela fournit simplement ce tampon de mémoire.

imprimeur est un simple décorateur qui ajoute certaines méthodes d'écriture spécifiques pour différents types tels que string , float , etc., donc vous ne pouvez pas " t faut tout convertir en octets bruts.

édité:

Ce est déjà venu


0 commentaires

4
votes

L'imprimeur est essentiellement une classe de commodité. Si vous voulez rapidement et facilement éliminer une ligne de texte à par exemple. Un fichier journal, un imprimeur le rend très facile.

trois caractéristiques:

  • the impression et printLN prendra tout type de données et faire la conversion pour vous. Pas seulement chaîne .
  • Le format relativement nouveau vaut son poids en or. Maintenant, c'est aussi simple en Java que dans C de produire une ligne de texte avec le contrôle de format de style C.
  • Les méthodes ne jettent jamais une exception! Certains programmeurs sont horrifiés à la possibilité d'entendre parler de choses qui ne vont pas mal. Mais si c'est un programme jetable ou faire quelque chose de vraiment simple, la commodité peut être belle. Surtout si la sortie est à System.out ou system.err qui ont peu de façons d'aller mal.

0 commentaires

1
votes

La principale raison d'utiliser l'imprimeur est d'accéder aux méthodes PrintXXX (comme PrintLN (int)). Vous pouvez essentiellement utiliser un imprimeur pour écrire dans un fichier comme vous utiliseriez System.out pour écrire sur la console.

Un bufferedWriter est un moyen efficace d'écrire dans un fichier (ou autre chose) car il va tamponner les caractères de la mémoire Java avant d'écrire dans le fichier.


0 commentaires