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

Interfaces Graphiques en Java Discussion :

[Composants texte] Gestion de gros fichiers


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut [Composants texte] Gestion de gros fichiers
    Salut !

    J'ai des fichiers de plusieurs Mo (10 à 30) que je doit traiter, le problème, c'est que je ne trouve pas de méthode pour les charger rapidement... Une idée peut être ?
    Pour l'instant je les lit comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void readFile(String filename) {
            edt.setText("");
            try {
                BufferedReader in = new BufferedReader(new FileReader(filename));
                String str;
                while ((str = in.readLine()) != null) {
                    insertText(str, null);
                }
                in.close();
            } catch (IOException e) {
            }
        }
    J'utilise des JTextArea, les autres composants textuels était encore plus long...
    Merci !
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    tu pourrais peut-être utiliser un StringWriter ou un StringBuilder pour stocker le texte, afin de ne solliciter qu'une seule fois le JTextArea (en faisant setText())?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Je viens d'essayer le StringBuilder :
    Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
    Quant au StringWriter, je sais pas trop comment ca fonctionne...

    Merci !
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    En fait j'ai trouvé une solution, j'utilise un thread pour lire le fichier...
    Par contre mon fichier est utilisé pour générer une page web (avec XSL) et le fichier généré est bien gros lui aussi, le problème c'est que le setPage du JEditorPane fait planter mon appli :
    Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
    Une idée ?

    Merki !
    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Pour l'erreur, je pense que c'est parce que le contenu du fichier est dupliqué en mémoire (StringBuilder + TextArea).

    Tout est une question de taille du buffer :
    - au début, il faisait 1 ligne. Trop lent
    - maintenant, il fait la totalité du texte. Trop gourmand en mémoire.

    Tu peux essayer de faire un buffer de 1000 caractères, par exemple.
    Sinon, tu peux augmenter la mémoire de la JVM.

    EDIT : Pour le StringWriter, tu peux brancher un PrintWriter dessus, par exemple (new PrintWriter(monStringWriter)).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    ok, je vais me pencher sur les 2 solutions.

    Encore merci !

    Je laisse le post ouvert au cas où...

    +++
    Ju
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut, je me suis posé le même genre de question il y a peu.
    Je chargais du XML sans aucun retour à la ligne (dans le fichier source) dans un JTextPane et c'était extrement long. En ajoutant des retours à la ligne dans le fichier source le temps à été grandement réduit. Peut peut-être t'être utile
    Bye
    Vive les roues en pierre

  8. #8
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Pas de soucis pour ça, j'ai traité mon fichier avant de le générer pour qu'il ait des retours à la ligne... Merci !
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  9. #9
    Membre actif Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Points : 240
    Points
    240
    Par défaut
    Ou sinon si c'est un problème d'affichage:
    Bufferisé la scrollpane et charger uniquement le nécessaire ?

Discussions similaires

  1. Réponses: 26
    Dernier message: 30/09/2014, 16h57
  2. modifier du texte dans un gros fichier texte
    Par christolb59 dans le forum MATLAB
    Réponses: 1
    Dernier message: 17/08/2012, 00h06
  3. gestion de gros fichiers en C++
    Par buzzkaido dans le forum C++
    Réponses: 6
    Dernier message: 07/08/2012, 12h16
  4. Gestion de gros fichiers
    Par bpy1401 dans le forum Android
    Réponses: 10
    Dernier message: 03/07/2012, 13h40
  5. Gestion des (gros) fichiers
    Par schneed dans le forum C++Builder
    Réponses: 1
    Dernier message: 23/02/2009, 20h05

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