Choisir entre FileReader et InputStreamReader
J'ai deux méthodes pour lire le Fichier Texte En java à l'aide d'un FileReader et d'Autres Fichiers InputStream
FileReader fr=new FileReader("C:\\testq\\test.txt");
BufferedReader br=new BufferedReader(fr);
String s;
while((s=br.readLine())!=null){
System.out.println("value are "+s);
}
et d'Autres est
FileInputStream fstream = new FileInputStream("C:\\testnew\\out.text");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null){
System.out.println (strLine);
}
Si les deux me donner de sortie ...je veux juste savoir qui est le meilleur moyen de le faire.
source d'informationauteur Basimalla Sebastin
Vous devez vous connecter pour publier un commentaire.
Je fortement conseiller à l'aide de
InputStreamReader
au lieu deFileReader
mais de spécifier explicitement l'encodage des caractères. C'est vraiment le plus grand avantage de l'utilisation deInputStreamReader
(et l'absence de possibilité de spécifier un encodage pourFileReader
est un grand trou dans l'API, de l'OMI).Je voudrais aussi supprimer le "calque" à l'aide de
DataInputStream
- il suffit de passer leFileInputStream
à laInputStreamReader
constructeur.Avant Java 8
Sinon, envisager d'utiliser une des nombreuses méthodes pratiques dans Goyave qui peut faire ce genre de chose beaucoup plus simple. Par exemple:
De Java 8
Java 8 introduit un tas de nouvelles classes et de nouvelles méthodes dans
java.nio.files
beaucoup de de qui par défaut (raisonnablement) de l'UTF-8:Les deux approches sont ok parce que vous utilisez un BufferedReader qui améliore les performances avec un pas de tampon approche. Dans votre second cas, il n'y a pas besoin d'envelopper le FileInputStream dans un DataInputStream. La dernière approche, vous permet de spécifier l'encodage du fichier par le biais de la InputStreamReader qui est généralement une chose importante.
Ça dépend, si vous voulez lire un fichier qui contient uniquement du texte (je veux dire un fichier texte), alors vous devriez utiliser le premier cas.
Si vous voulez lire un fichier qui représente des données binaires (je veux dire le fichier image ou un fichier vidéo etc), vous devriez utiliser le second cas.
Bien, vous créez un
BufferedReader
de laFileInputStream
à l'origine. Vous devriez le faire de la manière suivante:Pour obtenir un bon flux d'approche.