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

  FORUM HardWare.fr
  Programmation
  Java

  lecture d'un fichier volumineux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lecture d'un fichier volumineux

n°977087
Profil sup​primé
Posté le 09-02-2005 à 22:32:00  answer
 

Bonjour,  
 
J'ai un probleme  j'arrive pas a lire un fichier qui est je pense trop volumineux. J'arrive a charger tout mes fichiers texte sauf celui ci.(Le bloc note de windows arrive lui non plus a l'ouvrir et m'indique fichier trop volumineux ,mais s'ouvre tres bien avec word).
 
char data[] = new char[9999999];
  try{
         FileReader reader = new FileReader(file);
         int  charsread  = reader.read(data);
         String j=new String(data, 0 ,charsread);
textArea1.setText(j);
         }  catch(Exception a) {textArea1.setText("erreur" );}

mood
Publicité
Posté le 09-02-2005 à 22:32:00  profilanswer
 

n°977095
omega2
Posté le 09-02-2005 à 22:42:46  profilanswer
 

C'est quoi la taille exacte de ton fichier?

n°977099
nico168
Posté le 09-02-2005 à 22:47:23  profilanswer
 

je connais pas java mais j'imagine qu'il y a moyen de lire un fichier sans le charger en memoire, ligne par ligne si c'est du texte par exemple, ca depend de se que tu veux faire apres.

n°977104
lorill
Posté le 09-02-2005 à 22:54:12  profilanswer
 

simson a écrit :


char data[] = new char[9999999];


 
ben forcément, si tu fixes une taille maximale en dur, faut pas s'attendre a des miracles.
 
ensuite, si tu affiches la trace de l'exception tu auras tout de suite plus d'infos.
 
et enfin, comme dit au dessus, ne lit pas ton fichier en un bloc, mais en plusieurs fois.

n°977107
djok_fb
C'était mieux avant!
Posté le 09-02-2005 à 22:57:43  profilanswer
 

tu peux faire un truc du genre:
 

Code :
  1. try{
  2. BufferedReader br = new BufferedReader(new FilreReader(file));
  3. String lue = "coincoin";
  4. while (lue != null)
  5. {
  6.   lue = br.readLine();
  7.   // Ici Ajout de lu a ton textarea avec un StringBuffer ou autre
  8. }
  9. br.close();
  10. }catch ...


 
Pour info, une chaîne de caractère Java ne peut pas stocker plus de 65536 caractères (64ko)
Du coup, je pense que ton TextArea ne gérera pas non plus des textes plus grand...
 
(le coup des 64ko, c'était en Java 1.2 et 1.3, j'ai pas essayé depuis)

n°977111
lorill
Posté le 09-02-2005 à 23:00:20  profilanswer
 

djok_fb a écrit :


Pour info, une chaîne de caractère Java ne peut pas stocker plus de 65536 caractères (64ko)
(le coup des 64ko, c'était en Java 1.2 et 1.3, j'ai pas essayé depuis)


n'importe quoi.
 
même en java 1.1, la taille maximale d'une string dépend de la mémoire disponible.
je doute que tu ais essayé.

n°977115
Taz
bisounours-codeur
Posté le 09-02-2005 à 23:01:29  profilanswer
 

#  lue = br.readLine();
#   // Ici Ajout de lu a ton textarea avec un StringBuffer ou autre
 
 
super .... et si lue == null ...

n°977116
lorill
Posté le 09-02-2005 à 23:01:34  profilanswer
 

pour enfoncer le clou, les caractères d'une chaines sont encodés sur plus d'un octet.
 
je t'invite a lire cet excellent topic :  
http://forum.hardware.fr/hardwaref [...] 8627-1.htm

n°977248
nraynaud
lol
Posté le 10-02-2005 à 09:13:09  profilanswer
 

surtout que y'a mmap en java maintenant, donc plus besoin de s'emmerder à faire un chargement progressif à la main.


---------------
trainoo.com, c'est fini
n°977450
djok_fb
C'était mieux avant!
Posté le 10-02-2005 à 11:29:38  profilanswer
 

Taz a écrit :

#  lue = br.readLine();
#   // Ici Ajout de lu a ton textarea avec un StringBuffer ou autre
 
 
super .... et si lue == null ...


je vais tout lui écrire...
si lue == null, c'est à lui de voir...

mood
Publicité
Posté le 10-02-2005 à 11:29:38  profilanswer
 

n°977461
djok_fb
C'était mieux avant!
Posté le 10-02-2005 à 11:32:05  profilanswer
 

lorill a écrit :

n'importe quoi.
 
même en java 1.1, la taille maximale d'une string dépend de la mémoire disponible.
je doute que tu ais essayé.


Ben si malheureusement, j'ai essayé puisque ça m'a bien emmerdé...c'était p'tre un bug d'une version donnée de Java mais je n'ai pas pu mettre plus de 65000caractères dans un String.
Les 64Ko,c'est pour des caract ASCII a la source (genre un fichier texte tout pourri), je sais bien qu'en java 1 car c'est différent de 1octet...
 
gneuh ;)

n°977468
FlorentG
Unité de Masse
Posté le 10-02-2005 à 11:34:31  profilanswer
 

djok_fb a écrit :

je sais bien qu'en java 1 car c'est différent de 1octet...
 
gneuh ;)


Pas que en Java ;) C'est dès que t'as des String encodées en Unicode :)

n°977472
djok_fb
C'était mieux avant!
Posté le 10-02-2005 à 11:36:24  profilanswer
 

FlorentG a écrit :

Pas que en Java ;) C'est dès que t'as des String encodées en Unicode :)


Oui, mais là, on parle Java ;)

n°977488
sircam
I Like Trains
Posté le 10-02-2005 à 11:43:46  profilanswer
 

djok_fb, dans ton exemple, la boucle est mal agencée.
 

Code :
  1. while ((lue = br.readLine()) != null)


 
est correct.
 
De plus, on ne met pas le br.close() dans le bloc try, mais bien dans le bloc finally. Le br.close() est alors dans un bloc tray/catch qui lui est propre, avec test préalable br!=null.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°977490
Taz
bisounours-codeur
Posté le 10-02-2005 à 11:44:31  profilanswer
 

djok_fb a écrit :

je vais tout lui écrire...
si lue == null, c'est à lui de voir...


je dis juste que ta boucle est pourrie, tu peux pas faire
 
while((s = machin.readLine()) != null) comme tout le monde ?

n°977535
djok_fb
C'était mieux avant!
Posté le 10-02-2005 à 12:14:06  profilanswer
 

euh si...mais j'attaquais ma 16ieme heure de boulot, je commençais à fatiguer

n°977539
lorill
Posté le 10-02-2005 à 12:19:47  profilanswer
 

djok_fb a écrit :

Ben si malheureusement, j'ai essayé puisque ça m'a bien emmerdé...c'était p'tre un bug d'une version donnée de Java mais je n'ai pas pu mettre plus de 65000caractères dans un String.


j'ai essayé aussi et j'ai  pu mettre plusieur mega dedans sans soucis  [:sinclaire]

n°977541
nraynaud
lol
Posté le 10-02-2005 à 12:22:32  profilanswer
 

vous m'inquiétez avec vos chaînes de 65000 caratères, vous utilisez quoi comme algos et structures de données ?


---------------
trainoo.com, c'est fini
n°977542
nraynaud
lol
Posté le 10-02-2005 à 12:23:10  profilanswer
 

enfin, au moins on sait pourquoi "java c'est lent"


---------------
trainoo.com, c'est fini
n°977543
djok_fb
C'était mieux avant!
Posté le 10-02-2005 à 12:23:52  profilanswer
 

snif, j'ai dû merder à l'époque... :(


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

  lecture d'un fichier volumineux

 

Sujets relatifs
Lire un fichier XML sans sa DTDQuels droits nécessaires pour utiliser un fichier Access?
fichier LOG en c/c++Fichier TXT
Creer un fichier sonexecuter un fichier avec commande javascript
importation fichierEnvoi fichier java rmi
Lecture en VB d'un fichier cree en C 
Plus de sujets relatifs à : lecture d'un fichier volumineux


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