Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1384 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java]Lecture d'un gros fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java]Lecture d'un gros fichier texte

n°1890545
T0ots
Posté le 02-06-2009 à 19:13:59  profilanswer
 

Bonjour,
 
Je suis en train de tenter de stocker dans un tableau un dictionnaire qui provient d'un fichier texte. Seulement, après 30 min de compilation toujours rien... Je vais devoir en plus appliquer d'autres traitements à ce dictionnaire, donc il faut vraiment que je trouve une solution pour obtenir une lecture rapide. Le fichier texte ne fait que 24 Mo.
J'utilise pour le moment BufferedReader, mais pas moyen d'en ressortir quoi que ce soit.
D'autre part, je me demande si le problème ne vient pas d'Eclipse...Ou de la mémoire dédiée à la JVM.
Si quelqu'un a une idée, je suis preneuse.
 
Merci d'avance!

mood
Publicité
Posté le 02-06-2009 à 19:13:59  profilanswer
 

n°1890564
superbob56
Posté le 02-06-2009 à 20:20:48  profilanswer
 

ça serait pas mal si tu pouvais nos montrer ton code (ou au moins un extrait d'une partie représentative).
Si c'est effectivement la compilation (et pas l'exécution du programme) qui dure + de 30 min, le problème ne devrait pas venir de la taille de ton fichier (dictionnaire) mais soit de ton code, soit de ton ide, soit de l'ordi que tu utilise pour compiler ton programme.
 
Mais bon, ton code serait le bienvenu pour mieux diagnostiquer ton pb.


---------------
By bob.
n°1890599
T0ots
Posté le 02-06-2009 à 21:30:36  profilanswer
 

Alors voila mon code:
 
La fonction de lecture:
 

Code :
  1. public static String lecturefich() throws IOException {
  2.  RandomAccessFile fich = new RandomAccessFile("dico.txt", "r" );
  3.  Console.open("dico.txt", "r" );
  4.  StringBuffer dico = new StringBuffer();
  5.  dico.append(fich.readLine());
  6.  int i =0;
  7.  while (fich.readLine() != null) {
  8.   dico.append(fich.readLine());
  9.  }
  10.  return fich.toString();
  11. }


 
Et Eclipse me sort un out of memory...

Message cité 1 fois
Message édité par T0ots le 02-06-2009 à 23:28:25
n°1890663
Deamon
Posté le 03-06-2009 à 08:15:09  profilanswer
 

T0ots a écrit :


Code :
  1. while (fich.readLine() != null) {
  2.   dico.append(fich.readLine());
  3.  }



 

Ca règle peut-être pas le problème mais tu n'enregistres qu'une ligne sur 2 car ton readLine de ta condition récupère la ligne dans le vide.
Et en plus ça pourrait planter car fich.readLine pourrait être nul dans le while.


Message édité par Deamon le 03-06-2009 à 08:15:51
n°1890671
esox_ch
Posté le 03-06-2009 à 08:46:12  profilanswer
 

Il y a un truc que je comprend pas.. Pourquoi tu fais tout ce traitement si de toutes façons tu retournes fich.toString() et que donc "dico" n'est jamais utilisé ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1890693
nerisson
Pic-pic
Posté le 03-06-2009 à 09:48:06  profilanswer
 

1) Utilise plutôt un BufferedReader avec un FileReader à la place d'un RandomAccessFile.
2) Un peu de lecture sur le flux en Java: http://java.sun.com/docs/books/tutorial/essential/io/charstreams.html
3) Initialise ton StringBuffer avec une grosse taille (new StringBuffer(10*1024)), ça améliora les perfs
4) Tu peut utilise CommonsIO, avec les méthodes de FileUtils pour lire un fichier texte


---------------
Light is right
n°1890940
T0ots
Posté le 03-06-2009 à 15:05:30  profilanswer
 

Merci!
Problème résolu!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java]Lecture d'un gros fichier texte

 

Sujets relatifs
[c++ vs java] pointeur de fonctionafficher un fichier .txt dans une messagebox . possible ?
[VB] Afficher un fichier CSV[RESOLU]Problème de lecture de fichier tout bête
Texte tronquéCompiler du code java existant avec MAVEN
Inclure un fichier de n'importe où, online et easyphpexecuter un fichier .java
Plus de sujets relatifs à : [java]Lecture d'un gros fichier texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR