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

  FORUM HardWare.fr
  Programmation
  Java

  parcourir un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parcourir un fichier texte

n°777360
jeromejans​on
Posté le 25-06-2004 à 08:23:51  profilanswer
 

bonjour,
je voudrais parcourir un fichier texte contenant des enregistrements d'une base de données
une ligne représente un enregistrement, et dans une ligne chaques champ est separé par un point virgule
apprement le code que j'ai plante, il ne s'arrête jamais (on dirait qu'il trouve aps la fin du fichier), donc si vous pouvez m'eclairer ;)
 
try {
 FileReader text = new FileReader(fichier);
 int caractere;
 String mot = "";
 do {
  do {
   caractere = text.read();
   if (caractere != -1){
    mot += (char)caractere;
   }
  }while(caractere != 59);
  System.out.println(mot);
  mot = "";
 }while (caractere != -1);
} catch (FileNotFoundException e) {
 System.out.println("Exception fichier non trouvé : " + e.getMessage());
} catch (IOException e) {
 System.out.println("Exception entrée/sortie : " + e.getMessage());
}

mood
Publicité
Posté le 25-06-2004 à 08:23:51  profilanswer
 

n°777361
black_lord
Truth speaks from peacefulness
Posté le 25-06-2004 à 08:25:03  profilanswer
 

y'a pas EOF en java ?
 
edit : les balises cpp c'est pas juste pour faire beau [:dawa]


Message édité par black_lord le 25-06-2004 à 08:25:38

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°777368
Taz
bisounours-codeur
Posté le 25-06-2004 à 08:43:07  profilanswer
 

pourquoi tu te contente d'un FileReader bas-niveau alors qu'il te faudrait un BufferedReader ?

n°777373
jeromejans​on
Posté le 25-06-2004 à 08:48:38  profilanswer
 

tu peux un peu plus precis ???
je suis pas encore un pro, et meme avec la doc j'ai un peu de mal ;)
 
merci

n°777383
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 09:10:10  profilanswer
 

ben lis la doc ;)
 
le bufferedReader a une méthode qui te permet de lire ligne par ligne....et y'a un flag qui te dit si y'a encore une ligne dispo...


---------------
Jubi Photos : Flickr - 500px
n°777408
jeromejans​on
Posté le 25-06-2004 à 09:34:40  profilanswer
 

en fait j'ai trouve ca :
 
FileReader text = new FileReader(fichier);
BufferedReader temp=new BufferedReader(text);
String mot = "";
String ligne;
do {
 ligne=temp.readLine();
 System.out.println(ligne);
}while (ligne!=null);
 
et donc il m'affiche une fois "null" car j'ai pas trouve de flag qui dit qu'il n'y a plus de ligne dispo

n°777428
Taz
bisounours-codeur
Posté le 25-06-2004 à 09:50:10  profilanswer
 

il est idiot to do-while ...

n°777432
jeromejans​on
Posté le 25-06-2004 à 09:55:24  profilanswer
 

en fait le while j'ai remplace par :
while (temp.ready())
 
c'est mieux comme ca?

n°777441
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 09:58:39  profilanswer
 

c plus logique : si y'a plus de ligne ton readLine va te sortir une exception...qu'il ne fera pas si tu détectes AVANT qu'il n'y a plus de lignes


---------------
Jubi Photos : Flickr - 500px
n°777456
Taz
bisounours-codeur
Posté le 25-06-2004 à 10:07:04  profilanswer
 

pourquoi ne pas tout simplement s'arrter quand readLine() retourne null ?

mood
Publicité
Posté le 25-06-2004 à 10:07:04  profilanswer
 

n°777463
pascal34
one point !
Posté le 25-06-2004 à 10:09:34  profilanswer
 

Jubijub a écrit :

ben lis la doc ;)
 
le bufferedReader a une méthode qui te permet de lire ligne par ligne....et y'a un flag qui te dit si y'a encore une ligne dispo...


 
Et sur chaque ligne, un petit coup de StringTokenizer ou de String.split()
et le tour est joué !!!

n°777464
jeromejans​on
Posté le 25-06-2004 à 10:09:54  profilanswer
 

la en tout cas ca parcous ton mon fichier, ca affiche bien tout et ca s'arrete une fois que le fichier est fini, donc jusque la c'est tout bon pour moi ;)
 
il me reste plus maintenant qu'a decouper chaques ligne en fonction des points virgule, et la ca va etre un peu plus long je pense

n°777467
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 10:11:20  profilanswer
 

Taz a écrit :

pourquoi ne pas tout simplement s'arrter quand readLine() retourne null ?


 
genre avec un while(true) et un return if readLine() == null ?
ou alors tu parles d'un while(readLine() != null) ?
 
ce qui revient un peu au même en fait :D


---------------
Jubi Photos : Flickr - 500px
n°777472
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 10:13:15  profilanswer
 

jeromejanson a écrit :

la en tout cas ca parcous ton mon fichier, ca affiche bien tout et ca s'arrete une fois que le fichier est fini, donc jusque la c'est tout bon pour moi ;)
 
il me reste plus maintenant qu'a decouper chaques ligne en fonction des points virgule, et la ca va etre un peu plus long je pense


 
Non, c super rapide :  
 
StringTokenizer est ton ami

Code :
  1. StringTokenizer st = new StringTokenizer(taLigneADecouper, ";" );
  2. while (st.hasMoreTokens()) {
  3.     String monPetitBoutAStocker = st.nextToken();
  4. }



---------------
Jubi Photos : Flickr - 500px
n°777480
jeromejans​on
Posté le 25-06-2004 à 10:16:52  profilanswer
 

c'est ce que je venais de voir sur la doc ;)
 
en tout cas merci les gars :p ;)

n°777515
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 10:31:12  profilanswer
 

y'a String.split() aussi, mais si tu l'utilise compile ta regexp pour pas perdre en perfs...
 
le StringTokenizer c super performant, donc privilégie le (même si Sun ne recommande plus l'usage, c pas encore deprecated, faut foncer :D)


---------------
Jubi Photos : Flickr - 500px
n°777526
Taz
bisounours-codeur
Posté le 25-06-2004 à 10:34:06  profilanswer
 

Jubijub a écrit :

genre avec un while(true) et un return if readLine() == null ?
ou alors tu parles d'un while(readLine() != null) ?
 
ce qui revient un peu au même en fait :D

genre pas du tout.
 
 
c'est quoi votre problème avec la méthode canonique
 
while( (line = is.readLine()) != null )
{
  // traiter line
}
 
?

n°777557
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 10:49:01  profilanswer
 

je vois pas l'intéret du line = au début...
is.readLine()) != null : ca je comprends, mais quel est l"intéret d'affecter la ligne dans le while ?


---------------
Jubi Photos : Flickr - 500px
n°777582
noldor
Rockn'roll
Posté le 25-06-2004 à 11:02:26  profilanswer
 

Jubijub a écrit :

je vois pas l'intéret du line = au début...
is.readLine()) != null : ca je comprends, mais quel est l"intéret d'affecter la ligne dans le while ?

ben pour récupérer la valeur voyons
sinon elle est perdue dans la nature


---------------
http://runnerstats.net
n°777583
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 11:03:29  profilanswer
 

hum oui c pas con...sinon tu lis qu'une ligne sur 2 si tu rappelles le readline dans le corps de la méthode...
 
g honte, je me suis fait fourrer récemment avec le même genre de connerie sur un Iterator...


---------------
Jubi Photos : Flickr - 500px
n°777589
Taz
bisounours-codeur
Posté le 25-06-2004 à 11:07:40  profilanswer
 

oh putain le niveau :ouch:

n°777644
Jubijub
Parce que je le VD bien
Posté le 25-06-2004 à 11:29:37  profilanswer
 

je suis pas un warlord de la prog moi... [:joce] je débuterai plutot même...mais là j'admet avoir posté la question trop vite, c'est assez évident...


---------------
Jubi Photos : Flickr - 500px
n°777727
jeromejans​on
Posté le 25-06-2004 à 12:16:58  profilanswer
 

en tout cas merci les gars, j'ai réussi a faire exactement ce que je voulais ;)

n°777742
jeromejans​on
Posté le 25-06-2004 à 12:26:37  profilanswer
 

en fait depuis que je fais j'arrive a faire marcher ca je me suis rend u compte que j'avais un message dans le fichier stdout.log au demarrage de tomcat, je pense vraiment que ca a un rapport avec ce que je fais :
 
25 juin 2004 12:19:47 org.apache.catalina.session.StandardManager doLoad
GRAVE: "IOException" lors du chargement des sessions persistantes: java.io.EOFException
java.io.EOFException
 at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2150)
 at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2619)
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:726)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:251)
 at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:56)
 at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:384)
 at org.apache.catalina.session.StandardManager.load(StandardManager.java:343)
 at org.apache.catalina.session.StandardManager.start(StandardManager.java:657)
 at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:499)
 at org.apache.catalina.startup.ContextConfig.managerConfig(ContextConfig.java:315)
 at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:635)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:216)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4268)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
 at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
 at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:683)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:964)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
 at org.apache.catalina.core.StandardService.start(StandardService.java:476)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:2298)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:324)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)
25 juin 2004 12:19:47 org.apache.catalina.session.StandardManager start
GRAVE: Exception au chargement des sessions depuis le stockage persistant (persistent storage)
java.io.EOFException
 at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2150)
 at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2619)
 at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:726)
 at java.io.ObjectInputStream.<init>(ObjectInputStream.java:251)
 at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:56)
 at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:384)
 at org.apache.catalina.session.StandardManager.load(StandardManager.java:343)
 at org.apache.catalina.session.StandardManager.start(StandardManager.java:657)
 at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:499)
 at org.apache.catalina.startup.ContextConfig.managerConfig(ContextConfig.java:315)
 at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:635)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:216)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4268)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
 at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
 at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:683)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:964)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
 at org.apache.catalina.core.StandardService.start(StandardService.java:476)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:2298)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:324)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)
 
j'ai directement verifier si je fermer bien le stream, et c bon
donc si c'est quelque chose que vous avez deja vu ;)
 
merci

mood
Publicité
Posté le   profilanswer
 


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

  parcourir un fichier texte

 

Sujets relatifs
prechargement flash / stopper un fichier flash[Résolu] CGI et upload de fichier
Comment Faire pour lire un fichier en format excelParser un fichier... regex ?
fixer la fin d'un fichier[resolu] compter les lignes d'un fichier .csv
lire dans un fichier binaire en hexa (débutant)reconnaître fichier .js
[PHP] test upload de fichier (resolu)[VBS] Copie de fichier
Plus de sujets relatifs à : parcourir un fichier texte


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