Maison >Java >JavaBase >Explication graphique et textuelle détaillée du problème de lecture de fichiers tronqués en Java

Explication graphique et textuelle détaillée du problème de lecture de fichiers tronqués en Java

尚
original
2019-11-28 11:06:372172parcourir

Explication graphique et textuelle détaillée du problème de lecture de fichiers tronqués en Java

Java lit les fichiers texte (tels que les fichiers csv, les fichiers txt, etc.), et lorsqu'il rencontre le chinois, il devient tronqué. (Recommandé : Tutoriel vidéo Java)

Le code de lecture est le suivant :

List<String> lines=new ArrayList<String>();  
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = br.readLine()) != null) { 
      lines.add(line);
}
br.close();

Le principe de la lecture Java des fichiers tronqués :

Le traitement de la classe d'E/S de Java est comme indiqué dans la figure :

Explication graphique et textuelle détaillée du problème de lecture de fichiers tronqués en Java

La classe Reader est la classe parent pour lire les caractères dans les E/S de Java, et la classe InputStream est la classe classe parent pour la lecture des octets. La classe InputStreamReader C'est le pont qui associe les octets aux caractères. Elle est responsable du traitement de la conversion des octets lus en caractères lors du processus d'E/S. Le décodage spécifique des octets en caractères est implémenté par StreamDecoder. Pendant le processus de décodage de StreamDecoder, cela doit être fait par l'utilisateur Spécifiez le format de codage Charset. Il convient de noter que si vous ne spécifiez pas Charset, le caractère par défaut défini dans l'environnement local sera utilisé. Par exemple, dans l'environnement chinois, le codage GBK sera utilisé.

Résumé : Lorsque Java lit le flux de données, vous devez spécifier la méthode d'encodage du flux de données, sinon le jeu de caractères par défaut dans l'environnement local sera utilisé.

Après l'analyse ci-dessus, le code modifié est le suivant :

List<String> lines=new ArrayList<String>();
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
      lines.add(line);
}
br.close();

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn