InputStreamReader vs FileReader
Je n'arrive pas à déterminer la différence entre InputStreamReader
et FileReader
en plus de la façon dont les deux sont initialisés. Est-il un avantage à l'utilisation de l'un ou de l'autre? La plupart des autres articles de la couverture FileInputStream
vs InputStreamReader
, mais je suis contrastant avec FileReader
à la place. Me semble qu'ils ont tous deux le même but.
- Regardez cette questions, il a des réponses à partir de (toute SEULE à partir de) ma préférée 3 de SORTE que les utilisateurs! (Jon Skeet est plus que favori)
Vous devez vous connecter pour publier un commentaire.
D'abord,
InputStreamReader
peut gérer tous les flux d'entrée, pas seulement les fichiers. D'autres exemples sont les connexions réseau de classpath, les ressources et les fichiers ZIP.Deuxième,
FileReader
jusqu'à ce que Java 11 ne vous permet pas de spécifier un encodage et au lieu de seulement utilisé la platforme de codage par défaut, qui fait qu'il est assez inutile car elle aide entraînerait des données corrompues lorsque le code est exécuté sur les systèmes avec différentes plate-forme par défaut des codages.Depuis Java 11,
FileReader
est un raccourci utile pour l'emballage d'unInputStreamReader
autour d'unFileInputStream
.FileReader
.public FileReader(File file, Charset charset) throws IOException
FileReader lit de caractères à partir d'un fichier dans le système de fichiers. InputStreamReader lit les caractères à partir de tout type de flux d'entrée. Le ruisseau pouvait être un FileInputStream, mais pourrait aussi être un flux de données obtenues à partir d'une prise, d'une connexion HTTP, une base de données d'objets blob, que ce soit.
Je préfère habituellement à l'aide d'un InputStreamReader l'enveloppant d'un FileInputStream à lire à partir d'un fichier, car il permet de spécifier un codage spécifique de caractère.
FileReader s'étend InputStreamReader. La seule différence est que FileReader a des constructeurs qui supposent la lecture d'un fichier, telles que le
String filename
,File file
etFileDescriptor fd
Je vous suggère d'avoir un coup d'oeil à la source pour FileReader pour en savoir plus.
InputStreamReader
seul.