Java ReadLine() fin de fichier
Résolu/Fermé
banbino
-
12 juin 2008 à 16:23
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 13 juin 2008 à 11:34
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 13 juin 2008 à 11:34
A voir également:
- Java ReadLine() fin de fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Waptrick java football - Télécharger - Jeux vidéo
16 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 383
12 juin 2008 à 17:41
12 juin 2008 à 17:41
Bonjour banbino
goulamass, excuse moi d'intervenir dans ta discussion, mais je pense qu'en Java, la fonction ReadLine supprime les caractères
Banbino, je pense que le code correct devrait être le suivant
car tu remets ta variable i à zéro à chaque fois qu'une ligne n'est pas vide.
A plus
goulamass, excuse moi d'intervenir dans ta discussion, mais je pense qu'en Java, la fonction ReadLine supprime les caractères
\n et \r
Banbino, je pense que le code correct devrait être le suivant
BufferedReader inputFile = new BufferedReader(new FileReader(file)); myLine = inputFile.readLine(); i=0; while (myLine != null ) { if (myLine.equals("")) { i++; } } myLine = inputFile.readLine(); }
car tu remets ta variable i à zéro à chaque fois qu'une ligne n'est pas vide.
A plus
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 16:38
12 juin 2008 à 16:38
Hum en fait c'est parce qu'il fait quand même une itération de la boucle while
Donc ton i sera toujours à 1 au mins.
A la limite fait i-- à la fin plutôt.
Donc ton i sera toujours à 1 au mins.
A la limite fait i-- à la fin plutôt.
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 16:40
12 juin 2008 à 16:40
Ah en fait je pense que le prog considère "" et null comme la même chose (ce qui est logique)
Ton prog marche quand il y a pls lignes puisque dans ce cas le fichier n'est pas terminé.
Ton prog marche quand il y a pls lignes puisque dans ce cas le fichier n'est pas terminé.
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 16:41
12 juin 2008 à 16:41
Mais quel est l'intérêt d'un tel programme???
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
>
banbino
12 juin 2008 à 16:47
12 juin 2008 à 16:47
Si tu es libre recrées tes deux fichiers sans retour chariot à la fin.
Sinon je vais réfléchir et je te tiens au courant
Sinon je vais réfléchir et je te tiens au courant
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 16:48
12 juin 2008 à 16:48
Ah une idée.
Plutôt que de tester sur "" fais le sur "\n".
Ca devrait passer puisque \n est le retour chariot
Plutôt que de tester sur "" fais le sur "\n".
Ca devrait passer puisque \n est le retour chariot
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 17:09
12 juin 2008 à 17:09
En fait j'étais pas loin
Fais le avec \r qi lui est le retour chariot alors que \n est le saut de ligne.
La nuance est certes infimes mais bien présente.
Fais le avec \r qi lui est le retour chariot alors que \n est le saut de ligne.
La nuance est certes infimes mais bien présente.
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 17:15
12 juin 2008 à 17:15
Ca te renvoit quoi???
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 17:19
12 juin 2008 à 17:19
Sinon tente "\r\n"
On finira bien par trouver ^^
On finira bien par trouver ^^
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 17:22
12 juin 2008 à 17:22
Ou encore "[\n\r]+"
Je suis sûr que c'est une combinaison comme celle là
Je suis sûr que c'est une combinaison comme celle là
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 17:50
12 juin 2008 à 17:50
Oui surtout qu'il a raison dans le sens ou ReadLine supprime le retour chariot....
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 383
12 juin 2008 à 17:56
12 juin 2008 à 17:56
Bonjour,
As-tu déjà essayé avec le code suivant
Et sans rajouter le
A plus
As-tu déjà essayé avec le code suivant
BufferedReader inputFile = new BufferedReader(new FileReader(file)); myLine = inputFile.readLine(); i=0; while (myLine != null ) { if (myLine.length() == 0) { i++; } else { i=0; } myLine = inputFile.readLine(); }
Et sans rajouter le
i++;à la fin comme l'avait indiquer goulamass dans sa première intervention
A plus
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 18:03
12 juin 2008 à 18:03
Décidément on dirait que tu m'en veux.
le i++ de la fin ce n'est pas moi qui l'ai mis.
Quand à la taille je sais pas.
Cela peut marcher selon comment il considère le retour chariot
le i++ de la fin ce n'est pas moi qui l'ai mis.
Quand à la taille je sais pas.
Cela peut marcher selon comment il considère le retour chariot
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 383
>
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
12 juin 2008 à 18:05
12 juin 2008 à 18:05
Bonjour,
Mais non, c'est juste le contraire, je faisais référence à
Avec ton i++ à la fin il est sûr que ta valeur min sera 1.
Tu devrais juste rajouter à la place :
if( i > 0)
i++
Comme cela il laissera 0 si il y a pas de lignes
A plus
Mais non, c'est juste le contraire, je faisais référence à
Avec ton i++ à la fin il est sûr que ta valeur min sera 1.
Tu devrais juste rajouter à la place :
if( i > 0)
i++
Comme cela il laissera 0 si il y a pas de lignes
A plus
J'ai trouvé !!!!!!!
En faite, j'ai lu caractère par caractère tous le fichier. J'ai remarqué que le tout dernier caractère d'un fichier affichait '?' dans ma console. J'ai donc utilisé la méthode isDefined(c) de Character et c'est bon! Espérons qu'il n'y a pas d'autre charactères non définis dans le fichier...
code:
FileReader fr = new FileReader (theFile);
int i=0;
int j=0;
char c;
try{
while( i != -1 ) {
i=inputFile.read(); // on lit le caractère et on note son code dans i
c=(char) i;
if ((c == '\n' || !Character.isDefined(c))){
j++;
}else{
j=0;
}
}
}catch (IOException e){
System.err.println("IOException : "+e.getMessage());
}
Voila, merci tous le monde quand même :)
En faite, j'ai lu caractère par caractère tous le fichier. J'ai remarqué que le tout dernier caractère d'un fichier affichait '?' dans ma console. J'ai donc utilisé la méthode isDefined(c) de Character et c'est bon! Espérons qu'il n'y a pas d'autre charactères non définis dans le fichier...
code:
FileReader fr = new FileReader (theFile);
int i=0;
int j=0;
char c;
try{
while( i != -1 ) {
i=inputFile.read(); // on lit le caractère et on note son code dans i
c=(char) i;
if ((c == '\n' || !Character.isDefined(c))){
j++;
}else{
j=0;
}
}
}catch (IOException e){
System.err.println("IOException : "+e.getMessage());
}
Voila, merci tous le monde quand même :)
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
13 juin 2008 à 11:25
13 juin 2008 à 11:25
Effectivement.
Bravo à toi d'avoir trouver. ^^
Bravo à toi d'avoir trouver. ^^
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 383
13 juin 2008 à 11:34
13 juin 2008 à 11:34
Bonjour,
C'est très bien d'avoir trouvé la solution et encore mieux de l'avoir communiquée afin que d'autres puissent l'utiliser.
A plus
C'est très bien d'avoir trouvé la solution et encore mieux de l'avoir communiquée afin que d'autres puissent l'utiliser.
A plus
goulamass
Messages postés
1426
Date d'inscription
lundi 23 octobre 2006
Statut
Membre
Dernière intervention
11 janvier 2010
177
12 juin 2008 à 16:30
12 juin 2008 à 16:30
Bonjour,
Avec ton i++ à la fin il est sûr que ta valeur min sera 1.
Tu devrais juste rajouter à la place :
if( i > 0)
i++
Comme cela il laissera 0 si il y a pas de lignes
Edit => Hum attend faut que je réfléchisse un peu. Je crois que j'ai dit des conneries
Avec ton i++ à la fin il est sûr que ta valeur min sera 1.
Tu devrais juste rajouter à la place :
if( i > 0)
i++
Comme cela il laissera 0 si il y a pas de lignes
Edit => Hum attend faut que je réfléchisse un peu. Je crois que j'ai dit des conneries
12 juin 2008 à 17:44
Merci quand même
12 juin 2008 à 17:45
Au contraire ta participation est la bienvenue.
Surtout que tu proposes une solution toute simple à laquelle je n'ai pas pensé et suis partie direct dans quelque chose de trop farfelu.
Bon à ma décharge, je fais du java sur BlackBerry toute la journée et le choses simples comme celles là me passent parfois loin au dessus de la tête.
Donc mes excuses à banbino a qui j'aurai finalement fait perdre du tps.
C'était tellement bête que je n'ai pas fait attention....
Quoique ton code ne prend pas en compte le fait que se soit uniquement les dernières lignes.
Là il comptera toutes les lignes vides du fichiers.
C'est pour cela que la remise à 0 permet d'être sur de partir bien à partir du fichier.