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 dans un fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Lire dans un fichier
    y a t-il un moyen plus rapide de lire un fichier en entier que ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BufferedReader  in = new BufferedReader(new FileReader("file.txt" )); 
    String line = ""; 
    String text = ""; 
    while ((line=in.readLine()) != null){  
           	text += line + "\n";
    }  
    in.close(); 
    //utilise text
    Je pense que le lire ligne par ligne ralenti le temps d'execution. Est-il possible de le lire tout d'un coup?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Non, mais tu peux lire bloc par bloc avec FileReader.read(char[] cbuf)

  3. #3
    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,

    Citation Envoyé par lea.soineca Voir le message
    Je pense que le lire ligne par ligne ralenti le temps d'execution.
    Ce n'est pas tellement le fait de lire ligne par ligne qui pose problème, mais plutôt l'utilisation de l'opérateur "+" sur des String, qui implique la création d'objets temporaires à chaque fois.

    Dans une boucle c'est le genre de truc qui peut plomber les perfs d'une manière impressionnante !!!
    Il faut utiliser un StringBuilder à la place !


    Je te conseille aussi de spécifier le charset (pour éviter les problèmes d'encodage), et de fermer ton fichier proprement (via le bloc try-with-ressource de Java 7, ou un try/finally sur les versions antérieurs).
    Enfin si tu veux tout lire autant utiliser read(char[]) et un buffer plutôt que readLine() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	public static String read(String fileName, Charset charset) throws IOException {
    		try (Reader reader = new InputStreamReader(new FileInputStream(fileName), charset)) {
    			StringBuilder sb = new StringBuilder();
    			char[] cbuf = new char[8192];
    			int len;
    			while ( (len=reader.read(cbuf)) > 0 ) {
    				sb.append(cbuf, 0, len);
    			}
    			return sb.toString();
    		}
    	}

    a++

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Effectivement !!! Ca va beaucoup plus vite !

    C'est parfait !

    Merci !

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

Discussions similaires

  1. lire dans un fichier .ini
    Par porki dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 16/01/2006, 12h00
  2. lire dans un fichier .txt
    Par Baptiste Wicht dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 17/12/2005, 18h31
  3. Réponses: 4
    Dernier message: 01/12/2005, 01h01
  4. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57
  5. Réponses: 18
    Dernier message: 09/08/2005, 12h57

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