InputStreamReader vs FileReader

Je n’arrive pas à déterminer une différence entre InputStreamReader et FileReader plus de la façon dont les deux sont initialisés. Y a-t-il un avantage à utiliser l’un ou l’autre? La plupart des autres articles couvrent FileInputStream vs InputStreamReader , mais je contraste avec FileReader place. Il me semble qu’ils ont tous deux le même but.

Tout d’abord, InputStreamReader peut gérer tous les stream d’entrée, pas seulement les fichiers. D’autres exemples sont les connexions réseau, les ressources classpath et les fichiers ZIP.

Deuxièmement, FileReader ne vous permet pas de spécifier un encodage et utilise à la place l’encodage par défaut de la plaquette, ce qui le rend pratiquement inutile car son utilisation entraînera des données corrompues lorsque le code est exécuté sur des systèmes avec des codages par défaut différents.

En bref, oubliez que FileReader existe.

FileReader lit les caractères d’un fichier du système de fichiers. InputStreamReader lit les caractères de tout type de stream d’entrée. Le stream serait un FileInputStream, mais pourrait aussi être un stream obtenu à partir d’un socket, d’une connexion HTTP, d’un blob de firebase database, etc.

Je préfère généralement utiliser un InputStreamReader enveloppant un fichier FileInputStream pour lire un fichier car il permet de spécifier un codage de caractères spécifique.

FileReader étend InputStreamReader. La seule différence est que FileReader a des constructeurs qui supposent que vous lisez un fichier tel que Ssortingng filename , FileDescriptor fd et FileDescriptor fd

Je vous suggère de consulter la source de FileReader pour en savoir plus.