Capture d'un entier - Java - Programmation
Marsh Posté le 12-08-2005 à 10:31:33
Tu fais un readLine(), là ok, ça passe à la ligne suivante.
la méthode read() sans paramètre retourne un entier et non une String !!!!!!!!!!!!
Ton code est assez confu. Pourquoi ne pas parcourir le fichier ligne ( en stockant de la sorte String ligne=br.readLine() ) et utiliser la classe StringTokenizer pour isoler les différents éléments composant la ligne ?
Un petit tour sur les tutoriels serait bienvenu.
Bon courage.
Marsh Posté le 12-08-2005 à 10:34:47
Je viens d'exécuter ton code. Il fait exactement ce qui tu lui demandes. Il saute 4 lignes, puis lit le premier caractère (c'est le rôle de BufferedReader.read()), et renvoie le code ASCII 55, c'est-à-dire "7".
Marsh Posté le 12-08-2005 à 10:42:27
Les streams, ça se ferme dans un bloc finally, pas à la fin du try.
Marsh Posté le 11-08-2005 à 17:16:37
Salut à tous.
J'implémente un soft qui parse les données d'un fichier pour les réécrire dans un second fichier avec quelques modifications.
Voici un extrait du fichier à parser.
[#ff1c00]11 3 32 0 7 40
[#1c00e2]5520 1 1 1 5 5
32* COFI v.2 IDEAS v.11 *
07/13/05 VVPR 1 0 0
7 5 20 5 138 0 1 1
40 0.6978044820836787E+10 0.1238774153323844E+11 0.1901403936761112E+11
0.3445260201620660E+11 0.4048589907678004E+11 0.6673256768859634E+11
0.1133983935650789E+12 0.1266392523039663E+12 0.2253733675547690E+12
0.3181668544154566E+12 0.5255469213822878E+12 0.6458133052264467E+12
0.7453467372541699E+12 0.1097179188940539E+13 0.1184914291018450E+13
0.1680306774352798E+13 0.1888042254866058E+13 0.2418814107784721E+13
0.2931585857945411E+13 0.3329695498910833E+13
5520 0.4877913475036621E+01 0.0000000000000000E+00 0.4864388942718506E+01
0.0000000000000000E+00 0.4849582672119141E+01 0.0000000000000000E+00
0.4833709239959717E+01 0.0000000000000000E+00 0.4816733837127686E+01
0.0000000000000000E+00 0.4793504714965820E+01-0.3685846924781799E+00
0.4763874053955078E+01-0.3189862668514252E+00 0.4729751586914063E+01
-0.2703143358230591E+00 0.4559299945831299E+01-0.7672241926193237E+00
0.4537451267242432E+01-0.7189077734947205E+00 0.4514544963836670E+01
-0.6711576581001282E+00 0.4490724086761475E+01-0.6236515641212463E+00
0.4465955257415772E+01-0.5764250159263611E+00 0.4178462982177734E+01[/#ff1c00][/#ff1c00]
Je veux stocker la première valeur (un entier, 5520) de la seconde ligne car elle code le fichier.
J'ai donc défini un BufferedReader reader ...
J'ai sauté la première ligne avec un readLine() sans stocké sa valeur.
Je suis donc à présent sur la seconde ligne.
Naïvement, j'ai pensé qu'écrire
int num;
num=reader.read();
capturerait le 1er caractère autrement dit le 1er entier qui m'intéresse; hélas ce n'est pas le cas. J'ai affiché ce que ces lignes capturaient réellement : il s'agit du 3ème entier de la 1ère ligne (32)
Je ne vois vraiment pas pourquoi il me prend la 3ème valeur de la 1ère ligne alors que je l'ai sauté ... enfin je pense
De plus j'ai essayé d'enlever le 1er readLine() et d'en rajouter pour voir si c'était toujours le cas, et c'est effectivement toujours le cas.
voici le code
public String parse_vvp3() {
String tmp3 = "";
int num;
try {
BufferedReader br = new BufferedReader(new FileReader(f_atila));
BufferedWriter bw;
bw = new BufferedWriter(new FileWriter(f_sysnoise,true));
br.readLine();br.readLine();br.readLine();br.readLine();
num = br.read();
System.out.println(num);
String numero = new String();
numero = numero.valueOf(num);
System.out.println(numero);
br.readLine();
while ((tmp3 = br.readLine()) != null) {
tmp3 = br.readLine();
bw.write(tmp3 + "\r" );
if ( (tmp3 = br.readLine()).startsWith("5520" )) {
System.out.println("thales" );
br.close();System.exit(0);
}
}
br.close();
}//fin try
catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"Erreur lors de la lecture vvp3 du fichier " +
f_atila.getName(),
"Erreur",
JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
return tmp3;
}//fin
Est-ce que la méthode est appropriée ??
Merci pour votre aide
++