Problème programmation java

Résolu/Fermé
Utilisateur anonyme - 12 août 2009 à 22:19
 Utilisateur anonyme - 13 août 2009 à 11:40
Bonjour,
petit problème de programmation java^^,

comment récupérer la première ligne d'un fichier la stocker dans une variable
puis passé à une autre ligne etc ???

j'ai fais cela mais ça m'affiche tout le contenu^^:


void init(){

try{
InputStream is=new FileInputStream(fichier);
InputStreamReader isr=new InputStreamReader(is);
BufferedReader bfr=new BufferedReader(isr);
String ligne;

while ((ligne=bfr.readLine())!= null){
System.out.println(ligne);
chaine+=ligne+"\n";

}
br.close();
}
catch (Exception e){
System.out.println(e.toString());
}
JLabel question = new JLabel(chaine);

contsuj.setLayout(new BorderLayout());
contsuj.setBackground(Color.white);
contsuj.setPreferredSize(new Dimension(300, 60));
contsuj.add(question);

this.getContentPane().add(contsuj, BorderLayout.NORTH);

}
}

merci beacoup
A voir également:

4 réponses

Utilisateur anonyme
13 août 2009 à 01:36
Salut,

"j'ai fais cela mais ça m'affiche tout le contenu^^: "

C'est normal car dans ta boucle :

while ((ligne=bfr.readLine())!= null){
System.out.println(ligne);
chaine+=ligne+"\n";

}
tu lis tant qu'il y a encore à lire, puis tu fermes le fichier et il est possible que seulement après tu veuilles poser une question...

Tu dois donc poser d'abord ta question (ou plus exactement demander l'entrée du critère de selection de la ligne à conserver avant de lancer la lecture), tu vérifies si la ligne lue correspond au critère, si oui range la dans chaine, sinon, continue la lecture jusqù'à trouver (ou non trouver, auquel cas tu affiches un message) la bonne ligne. Dans les 2 cas, tu fermes le fichier.

Tu peux alors demander un nouveau critère .
Sauf la première fois, ouvre le fichier (qui a été fermé lors d'une recherche précédente) ce qui te permettra de lire de nouveau le fichier depuis le début et lance de nouveau la lecture... Voir la remarque (2)

Remarques:

(1) -Sépare init() le la lecture.

(2) -Critère peut être un critères ou bien une valeur ne pouvant pas être confondu avec un critère réel: (par exemple **fin** si le critère est String et que tu testes avant de lancer la lecture).

Cordialement,

Dan


Cordialement,

Dan
0
Utilisateur anonyme
13 août 2009 à 10:50
je penser que readline() le faisait tout seul.

donc en gros je dois moi même rentrer l'indice de la ligne 1, pour obtenir la première et l'incrémenter pour passer à la suivante,

Mais comment rentrer se paramètre? je ne sais pas qu'elle est la variable qui permet d'obtenir la ligne dans les fichiers et de l'insérer??

comment marche lineNumberReader il n'accepte que des objets de type InputStreamReader ??
0
Utilisateur anonyme
13 août 2009 à 11:11
Salut,

Je ne comprend plus là. Ton programme est bon si tu veux lire toutes les lignes. Et bien sùr que readline() passe tout seul à la ligne suivante grâce à la boucle while, mais tu sembles ne pas vouloir toutes les lignes quand tu ecris "j'ai fais cela mais ça m'affiche tout le contenu^^: ", d'où ma réponse!

Alors précise bien ce que tu veux faire.

Cordialement,

Dan
0
Utilisateur anonyme
13 août 2009 à 11:40
c'est bon j'ai trouvé, je voulais simplement inséré le numéro de la ligne et la récupéré dans une variable et l'afficher en JLabel . quand je varie nb j'arrive a récupéré la ligne que je veux^^ youpi merci pour tes conseils!!

public void initWord() throws Exception{


int nb = 2;
setLineNumber(nb);
File file = null;
FileReader freader = null;
LineNumberReader lnreader = null;
try{
file = new File("question.txt");
freader = new FileReader(file);
lnreader = new LineNumberReader(freader);
String line = "";

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


System.out.println("Line: " + lnreader.
getLineNumber() + ": " + line);

if (lnreader.getLineNumber() == nb){

quest = line;
System.out.println("Line numero: " + lnreader.
getLineNumber() );
}
}



}
finally{
freader.close();
lnreader.close();
}
0