Java ReadLine() fin de fichier
Résolu
banbino
-
Christounet Messages postés 1272 Date d'inscription Statut Membre Dernière intervention -
Christounet Messages postés 1272 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un soucis en Java, je veux savoir par combien de lignes vide se termine mon fichier
Avec cette solution ça marche sauf quand il n'y a qu'une ou aucune ligne vide, mon "i" est de 1. Il ne fais pas la différence entre les 2.
ex fichier: >>toto autre Fichier: >>Toto
>>Tata >>Tata
>>
=> même résulat de 1.
mon code:
BufferedReader inputFile = new BufferedReader(new FileReader(file));
myLine = inputFile.readLine();
i=0;
while (myLine != null ){
if (myLine.equals("")){
i++;
}else{
i=0;
}
myLine = inputFile.readLine();
}
i++;
Merci d'avance :)
J'ai un soucis en Java, je veux savoir par combien de lignes vide se termine mon fichier
Avec cette solution ça marche sauf quand il n'y a qu'une ou aucune ligne vide, mon "i" est de 1. Il ne fais pas la différence entre les 2.
ex fichier: >>toto autre Fichier: >>Toto
>>Tata >>Tata
>>
=> même résulat de 1.
mon code:
BufferedReader inputFile = new BufferedReader(new FileReader(file));
myLine = inputFile.readLine();
i=0;
while (myLine != null ){
if (myLine.equals("")){
i++;
}else{
i=0;
}
myLine = inputFile.readLine();
}
i++;
Merci d'avance :)
16 réponses
-
Bonjour banbino
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 suivantBufferedReader 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-
-
Tu n'as pas à t'excuser.
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.
-
-
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. -
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é. -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ah une idée.
Plutôt que de tester sur "" fais le sur "\n".
Ca devrait passer puisque \n est le retour chariot -
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. -
-
-
Ou encore "[\n\r]+"
Je suis sûr que c'est une combinaison comme celle là -
-
Oui surtout qu'il a raison dans le sens ou ReadLine supprime le retour chariot....
-
Bonjour,
As-tu déjà essayé avec le code suivantBufferedReader 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 lei++;
à la fin comme l'avait indiquer goulamass dans sa première intervention
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 :) -
-
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 -
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