Bonjour !

Je souhaite récupérer des données d'un fichier d'entrée (*.dat, du texte). Cette démarche est identique aux outils Properties de Java. Néanmoins le fichier d'entrée n'est pas de la forme key=value, mais plutôt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
c Key
Value
 
Key2
Value2
etc...
J'ai d'abord orienté ma recherche sur la FAQ du site où j'ai découvert l'objet Scanner :
Citation Envoyé par Comment lire un fichier ligne par ligne ?
auteurs : sironimo, Baptiste Wicht
String filePath = "g:\\fichier.txt";
Scanner scanner=new Scanner(new File(filePath));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(line)
}
scanner.close();

De mon coté je ne souhaite pas l'afficher mais extraire les value de certains couples (key,value).
La méthode que j'utilise se résume ainsi :
1 - Initialisation des données :
- Paramètre => File
- String des key recherchées
- Scanner et Matcher
2 - Parcourir le fichier texte avec la méthode Scanner.hasNextLine()
- Si la ligne courante correspond à une des key (sous forme Pattern),
ça veut dire que la donnée est à la ligne suivante (cf. début du post)
donc je stock cette ligne.
- Sinon je teste si ça correspond à une autre des key recherchées.
3 - Traitement supposé terminé, je scanner.close() et affiche les données stockées.

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
public class GetDatas 
{
	public static Pattern pLine, searchName, searchLongi, searchIniDate, searchS, searchCP,
	searchDM, searchEM, searchXM;
	public static Matcher m;
	public static String newSN, newLN, newDN, newS, newCPN, newDMN, newEMN, newXMN;
 
	public static void writeProps(String pathDat) throws IOException
	{	
		File srcFile = new File(pathDat);
		Scanner scanner = new Scanner(srcFile);
		String satName = "c Satellite Name"; 
		String longiName = "c Satellite Longitude Positioning (in °E)"; 
		String dateName = "c Initial Simulation Date (Year, Month, Day)"; 
		String sName = "c Satellite cross sectional area (in m2)"; 
 
		int nbLigne=0;
 
		while(scanner.hasNextLine())
		{
			String line = scanner.nextLine();
			nbLigne++;
			pLine = Pattern.compile(line);
 
			if(pLine.matcher(satName).matches())
			{
				newSN = scanner.nextLine();
				System.out.println("Nom récupéré à la "+nbLigne+"-ème ligne");
			}
			else
			{
				if(pLine.matcher(longiName).matches())
				{
					newLN = scanner.nextLine();
					System.out.println("Longitude récupérée à la "+nbLigne+"-ème ligne");
				}
				else
				{
					if(pLine.matcher(dateName).matches())
					{
						newDN = scanner.nextLine();
						System.out.println("Date de simulation récupérée à la "+nbLigne+"-ème ligne");
					}
					else
					{
						if(pLine.matcher(sName).matches())
						{
							newS = scanner.nextLine();
							System.out.println("Section m² récupérée à la "+nbLigne+"-ème ligne");
						}
					}
				}
			}
		}
		scanner.close();	
		System.out.println("Nb Lignes : "+nbLigne+"\nNom : "+newSN+"\n"+"Longitude en °Est : "+newLN+"\n"+"Date initiale : "+newDN);
	}

Mon fichier d'entrée est celui ci :

c Restart Filename
c Autonomy Filename
c Thruster Filename
NILE101.th
c Orbit Determination Filename
NILE101.do
c Strategy Filename
NILE101.st2
c Satellite Name
NILE101
c Satellite Longitude Positioning (in °E)
35
c Initial Simulation Date (Year, Month, Day)
2010 06 15
c Satellite cross sectional area (in m2)
50.12
Mais mon résultat (affiché ds la console) pose problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Nom récupéré à la 9-ème ligne
Nb Lignes : 23
Nom : NILE101
Longitude en °Est : null
Date initiale : null
Je ne récupère que le nom et pas les autres paramètres alors que les Pattern et les key du fichiers sont censés matcher. Quelqu'un aurait une idée ?
Je suis également à l'écoute de différentes approches si vous en avez !

Merci par avance.