EDIT: Ma réponse originale ci-dessous. Le ci-dessous n'est pas pertinent dans ce cas, puisque le lecteur tamponné est en train d'encapsuler un StringReader, qui enveloppe une chaîne. Il n'y a donc pas de mise en mémoire tampon à effectuer, et BufferedReader semble être redondant. Vous pouvez faire un argument pour l'utilisation de meilleures/pratiques cohérentes, mais ce serait assez ténu.
Peut-être le résultat d'un copier/coller, ou peut-être un refactor IDE-driven trop loin! BufferedReader tentera de lire de manière plus optimale.
C'est-à-dire, il va lire des blocs de données plus volumineux en une seule fois (dans une quantité configurable), puis rendre disponible si nécessaire. Cela permettra de réduire le nombre de lectures à partir du disque (etc.) au détriment de l'utilisation de la mémoire.
Pour citer le Javadoc:
En général, chaque demande de lecture en un lecteur provoque un correspondant lecture Présentation d'une demande du caractère sous-jacente ou d'un flux octet. Il est donc conseillé de envelopper un BufferedReader autour de tout lecteur dont lecture() opérations peuvent être coûteuses, telles que FileReaders et InputStreamReaders
L'utilisation de BufferedReader sera en fait légèrement plus lente (et rendra le code plus compliqué) –