IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

lire l'integralite d'un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Invité
    Invité(e)
    Par défaut lire l'integralite d'un fichier
    Bonjour a tous,

    Remarque préliminaire : Je me trouve actuellement en Irlande alors je fais ce que je peux pour les accents, mais il va en manquer sans doute pas mal.

    J'ai pas mal cherche sur le net et sur developpez.net, mais j'ai rien trouve qui corresponde vraiment a mon besoin.
    En fait j'aimerais savoir quelle est votre méthode pour lire l'INTEGRALITE d'un fichier texte. C'est a dire lire la totalité des caractères disponibles sur un flux d'entrée.

    Je cherche une methode qui me retourne un objet String contenant tout mon fichier.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Avec un code de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public static String read(final File file, Charset charset) throws IOException {
    	// Si le charset n'est pas défini on utilise celui par défaut
    	if (charset==null) charset = Charset.defaultCharset();
     
    	// On ouvre le fichier en lecture, en spécifiant le charset :
    	final Reader in = new InputStreamReader(new FileInputStream(file), charset);
    	try {
    		// Le buffer qui contiendra le contenu du fichier :
    		final StringBuilder sb = new StringBuilder((int)file.length());
    		// Le tableau qui servira de buffer pour la lecture :
    		char[] cbuf = new char[cbuf];
    		// Le compteur qui contiendra le nombre de char lu à chaque iteration
    		int len;
     
    		// On tente de remplir le buffer cbuf à chaque iteration
    		while ( (len=in.read(cbuf)) >= 0 ) {
    			// Et on ajoute ce qu'on a lu dans le buffer principal :
    			sb.append(cbuf, 0, len);
    		}
     
    		// Enfin on retourne notre chaine :
    		return sb.toString();
    	} finally {
    		in.close();
    	}
    }

    a++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour la réponse. J'imagine qu'utiliser un tableau buffer est plus efficace que lire les caractères un par un.

    Reste plus qu'a déterminer quelle sera la bonne taille pour le buffer...

    Je me demande quand même s'il y a une raison pour que ce genre de méthode (lecture de la totalité d'un flux) n'existe pas dans l'API de base...

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par kei2906 Voir le message
    Merci pour la réponse. J'imagine qu'utiliser un tableau buffer est plus efficace que lire les caractères un par un.
    Oui, cela limite le nombre de demande d'I/O auprès du système...

    Citation Envoyé par kei2906 Voir le message
    Reste plus qu'a déterminer quelle sera la bonne taille pour le buffer...
    Mis à par pour de très gros fichier, je ne sais pas si la différence se fera sentir.
    Perso par habitude j'utilise des buffer de 8192. D'ailleurs il y a une coquille dans on code il fallait bien sûr lire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char[] cbuf = new char[8192];

    Citation Envoyé par kei2906 Voir le message
    Je me demande quand même s'il y a une raison pour que ce genre de méthode (lecture de la totalité d'un flux) n'existe pas dans l'API de base...
    C'est l'API "de base" justement...
    Disons qu'il n'est pas évident de déterminer ce qui doit être présent de base, et ce qui ne doit pas l'être, tout en essayant de ne pas obtenir in fine une API énormissime...

    Chacun a ses goûts et ses besoins, et si tu demandes à 10 développeurs tu risques d'avoir 10 réponses différentes...

    Par contre cela doit sûrement être présent dans les Jakarta Commons, qui proposent un bon paquet de classes utilitaires


    a++

  5. #5
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Points : 252
    Points
    252
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Par contre cela doit sûrement être présent dans les Jakarta Commons, qui proposent un bon paquet de classes utilitaires
    Oui il y a commons-IO par exemple.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup pour toutes ces réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Meilleure facçon de lire et d'écrire un fichier XML
    Par newfsch dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 12/05/2004, 11h17
  2. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 20h20
  3. Lire un attribut dans un fichier XML en C++
    Par ti.k-nar dans le forum XML
    Réponses: 2
    Dernier message: 14/10/2002, 16h22
  4. Réponses: 5
    Dernier message: 20/08/2002, 19h01
  5. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 19h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo