Lire le contenu d'un fichier texte
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Gestion des fichiers :: Les fichiers texte
Page 1 sur 1
Lire le contenu d'un fichier texte
La lecture d'un fichier texte est une opération très courante, qui se fait classiquement de la manière suivante :
public Object transform(Object obj) throws Exception
{
File file = (File)obj;
FileReader fr = new FileReader(file);
char[] a= new char[(int)file.length()];
fr.read(a,0,(int)file.length());
fr.close();
return new String(a);
}
Le problème de cette méthode est que dans le cas ou le fichier texte est encodé par un autre encodage que celui par défaut, le résultat sera un charabia de caractères digne du capitaine Haddock.
Nous allons présenter une entité qui fait appel à l'entité précédente de détection de charset afin d'offrir une méthode générique susceptible de lire correctement n'importe quel fichier texte, qu'il soit encodé en UTF8, UTF16 ou windows1252.
gus.file.read.text.txtfile
public Object transform(Object obj) throws Exception
{
File file = (File)obj;
FileReader fr = new FileReader(file);
char[] a= new char[(int)file.length()];
fr.read(a,0,(int)file.length());
fr.close();
return new String(a);
}
Le problème de cette méthode est que dans le cas ou le fichier texte est encodé par un autre encodage que celui par défaut, le résultat sera un charabia de caractères digne du capitaine Haddock.
Nous allons présenter une entité qui fait appel à l'entité précédente de détection de charset afin d'offrir une méthode générique susceptible de lire correctement n'importe quel fichier texte, qu'il soit encodé en UTF8, UTF16 ou windows1252.
gus.file.read.text.txtfile
- Code:
package gus05.entity.gus.file.read.text.txtfile;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import gus05.framework.core.Entity;
import gus05.framework.core.Outside;
import gus05.framework.core.Service;
import gus05.framework.features.Transform;
public class ReadTextTxtFile implements Entity, Transform {
public String getName() {return "gus.file.read.text.txtfile";}
public String getCreationDate() {return "2010.09.21";}
private Service findCharset;
public ReadTextTxtFile() throws Exception
{findCharset = Outside.service(this,"gus.charset.findcharset.txtfile");}
public Object transform(Object obj) throws Exception
{
File file = (File)obj;
if(file.length()==0) return "";
Charset charset = (Charset) findCharset.transform(file);
if(charset==null) charset = Charset.defaultCharset();
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis,charset);
char[] a = new char[(int)file.length()];
isr.read(a,0,(int)file.length());
isr.close();
return new String(a);
}
}
Projet gus05 de développement Java :: Développements :: Quelque-unes de mes entités :: Gestion des fichiers :: Les fichiers texte
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Mar 16 Sep - 12:01 par Gus
» Présentation du jeu Vindinium
Jeu 20 Fév - 15:32 par Gus
» Rechercher la cible la plus proche avec le "Breadth First Search"
Jeu 20 Fév - 13:06 par Gus
» Impression d'écran avec sélection de zone
Jeu 20 Fév - 12:12 par Gus
» Envoyer un mail par un compte Gmail
Jeu 25 Avr - 14:04 par Gus
» Streaming : comment télécharger les vidéos
Lun 4 Fév - 19:59 par Gus
» Synology : installer ipkg
Mar 22 Jan - 21:22 par Gus
» Trouver le type de lecteur avec JNA
Mer 9 Jan - 23:11 par Gus
» Adresse ip publique et adresse ip privée, Internet box et UPnP
Mer 9 Jan - 21:02 par Gus
» Accéder au numéro de série du lecteur par un script vb
Mer 9 Jan - 19:31 par Gus