Revenir au début d'un BufferedReader

Résolu/Fermé
madeinloveyou Messages postés 61 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 avril 2010 - 7 mai 2009 à 10:14
madeinloveyou Messages postés 61 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 avril 2010 - 7 mai 2009 à 11:23
Bonjour,

voici mon code :
=> String s = /home/gaelle/Oligo.fasta

BufferedReader BR = new BufferedReader(new FileReader(s));
if(BR.readLine().substring(0,1).equals(">")){
...
}

à cause du if je lis la première ligne, mais j'en ai encore besoin après !!
Comment revenir à la première ligne ?
J'ai essayé de mettre un BR.mark() puis reset(), mais sans succès ...
en plus je ne sait quel entier mettere pour mark ??

6 réponses

sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
7 mai 2009 à 10:30
(Re) salut Gaëlle,

à cause du if je lis la première ligne, mais j'en ai encore besoin après !!
Comment revenir à la première ligne ?


Tu conserves la ligne dans une variable locale.
Exemple:
String curLine = null;
while ((curLine = br.readLine()) != null) {
	// ici ton code testant curLine
}

Remarque générale: essaie de respecter la convention de nommage Java (nom des variables commençant par minuscule).

++
0
madeinloveyou Messages postés 61 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 avril 2010
7 mai 2009 à 10:54
Le problème c ke j'ai besoin de savoir par quel caractère le fichier commence !!
en fonction de ca j'effectue différent traitement !!!
0
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
7 mai 2009 à 11:00
Ben tu testes la première ligne... ^^
// lire la 1ère ligne
String curLine = br.readLine();
if (curLine != null) {
	if (curLine.startsWith(">") {
	// ...
		while ((curLine = br.readLine()) != null) {
			// ici ton code utilisant curLine
		}
	} else {
	// ...
	}
}

++
0
madeinloveyou Messages postés 61 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 avril 2010
7 mai 2009 à 11:04
en fait g fait autre chose qui marche :

// je créer un buff pour ensuite enregistrer le premier caractère
BufferedReader buffR = new BufferedReader(new FileReader(s));
String auxline = buffR.readLine().substring(0,1);
buffR.close();
// je le ferme, du coup après je peut utiliser un autre ... et j'ai donc ma fameuse 1ère ligne !! =)
java.sql.Statement stmt = connexion.createStatement();
BufferedReader BR = new BufferedReader(new FileReader(s));

String line = BR.readLine();
int i = 1;
int index [] = new int [3];
if(auxline.equals(">")){

while ((line = BR.readLine()) != null){
....

Merci com même !!!
a++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 722
7 mai 2009 à 11:08
^^ Il n'y a pas de quoi...

Il serait bien de lire les réponses & d'essayer de comprendre ce que l'autre te dit. Ton code de remplacement n'est pas optimisé (il ouvre 2 fois le stream).

Mais bon, je crois demander trop là...
0
madeinloveyou Messages postés 61 Date d'inscription mercredi 6 mai 2009 Statut Membre Dernière intervention 22 avril 2010
7 mai 2009 à 11:23
oui je c coté optimisation c pa top !!!
en effet c peu etre bcp demandé ^^ ....mdr
0