8
votes

L'imprimeur est-il tamponné?

Je sais que le imprimeur est vraiment bon si nous voulons écrire des données formatées, et je connais également l'utilisation de bufferedWriter pour améliorer les performances IO.

mais J'ai essayé quelque chose comme ça, xxx

J'ai observé que lorsque la méthode de flush est commentée, il n'y a pas de sortie, mais lorsque je le décompte, je reçois la sortie souhaitée.

Ceci n'est possible que si l'imprimeur est tamponné. Si tel est le cas, quel est le point d'envelopper une imprimeuse à l'aide d'un bufferedWriter, puis écrivez-le?

Bien que le Javadoc ne mentionne nulle part que l'imprimeur est tamponné , mais il semble le cas.


1 commentaires

Tous les écrivains ont la méthode de flush.


4 Réponses :


8
votes

de la source Java 8 pour l'imprimeur xxx

Vous pouvez voir que l'imprimeur utilise bufferedWriter et qu'il a une option autoflush ce qui n'aurait aucun sens si c'était tamponné.


0 commentaires

2
votes

L'imprimeur est tamponné. La différence est que imprimeur offre des méthodes de commodité pour écrire des représentations de chaînes formatées d'objets tels que println () et printf () . Il a également automatiquement rougir (si évidemment, il a un tampon).

Les deux classes sont efficaces. Si vous activez PRODUCTROITRIER SO AUTO FLUSHING, alors il peut être moins (car il va rincer chaque fois que vous appelez quelque chose comme println () ). Une autre différence est que imprimeur ne vous permet pas de rédiger directement des octets.


1 commentaires

L'imprimeur a aussi des méthodes d'écriture. "Une autre différence est que l'imprimeur ne vous permet pas de rédiger directement d'octets directement": je ne comprends pas cette déclaration.



8
votes

J'ai vérifié les versions JDK commençant par 1.6.0_45 et toutes ont Ce constructeur présent:

PrintWriter pw = new PrintWriter(System.out, true);
pw.println("Statement 1");
pw.println("Statement 2");


2 commentaires

Eh bien, je veux simplement souligner que s'il n'est pas mentionné nulle part dans les spécifications Java que imprimeur doit utiliser des tampons, cela pourrait ne pas rester si dans les futures versions Java. Les implémentations peuvent changer. Je suis à peu près sûr que cela s'appelle l'abstraction ou l'encapsulation - je ne sais pas quoi cependant.


@Johnred Merci pour votre commentaire, si vous pensez que la réponse peut être améliorée, veuillez le modifier.



0
votes

Je pense que puisque l'imprimeur peut également lire la chaîne à la fois, elle utiliserait le tampon.


0 commentaires