Exploiter fichier TXT en java

Stevendep Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Alors voilà, je suis en BTS SIO en alternance et mon entreprise me demande donc quelques exos pour le moment, là je dois avec un programme JAVA récupérer ces infos :


1;La Défense - Grande Arche;Esplanade de La Défense;Pont de Neuilly;Les Sablons;Porte Maillot;Argentine;Charles de Gaulle - Étoile;George V;Franklin D. Roosevelt;Champs-Élysées - Clemenceau;Concorde;Tuileries;Palais Royal - Musée du Louvre;Louvre - Rivoli;Châtelet;Hôtel de Ville;Saint-Paul;Bastille;Gare de Lyon;Reuilly - Diderot;Nation;Porte de Vincennes;Saint-Mandé;Bérault;Château de Vincennes;
2;Porte Dauphine;Victor Hugo;Charles de Gaulle - Étoile;Ternes;Courcelles;Monceau;Villiers;Rome;Place de Clichy;Blanche;Pigalle;Anvers;Barbès - Rochechouart;La Chapelle;Stalingrad;Jaurès;Colonnel Fabien;Belleville;Couronnes;Ménilmontant;Père Lachaise;Philippe Auguste;Alexandre Dumas;Avron;Nation;
.
.
.
Et ce jusqu'à la ligne 8 du métro. Ce que dois faire, récupéré le numéro de la ligne, puis le nom des stations, et ainsi leurs donner un ordre, "La Défense" station n°1 de la ligne 1, "Esplanade" Station n°2, et ce pour chaque station des 8 lignes, le but étant de créer un fichier par station/ligne pour créer une sorte de base de donnée, le "formulaire" est déjà créé, il s'agit donc de remplir automatiquement les champs, et d'enregistrer juste en exécutant la fonction.

J'utilise ce code pour lire mon fichier TXT :

try {
BufferedReader lecteurDeFlux = new BufferedReader(
new FileReader("C:/Users/Développement/Desktop/ListeStationsMetro.txt"));
try {
String ligneEnCours = "";
while( (ligneEnCours = lecteurDeFlux.readLine()) != null ) {
System.out.println(ligneEnCours);
}
} finally {
lecteurDeFlux.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}

Qui fonctionne tout à fait correctement. J'ai aussi compris que je devais utiliser une fonction avec un split pour couper à chaque ";" mais en dehors de ça je ne trouve plus rien, nulle part, soit c'est parce que j'arrive pas à chercher soit c'est parce que personne n'a encore demandé ça ....

Je vous remercie par avance je suis complètement perdu avec en prime un mal de crâne à force de fouiller partout !

A voir également:

3 réponses

arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Bonjour,

Il faudrait expliciter un peu mieux ce "formulaire", et indiquer le but final de récupérer ces infos.

Le formulaire, il est en quoi? En Java? Etc, etc ...
0
Stevendep Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
En fait pour la partie formulaire je sais m'en débrouiller, il est dans un masque Lotus d'IBM, donc ce n'est pas vraiment ça qui m'importe, je voudrai en fait, faire une variable avec le numéro de ligne, une avec la station et une avec le n° de cette station, par exemple :
boucle 1 :
LigneMetro = 1
Station = La Défense - Grande Arche
n° = 1
boucle 2 :
LigneMetro = 1
Station = Esplanade de La Défense
n° = 2

et ainsi de suite pour toutes les stations et toutes les lignes.
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
Bonjour,

Ton fichier comporte des ";" entre chaque mot-clé ?
Si tel est le cas, chaque ligne de ton fichier correspond au numéro de la ligne et toute les stations de celle-ci le tout séparé par un point virgule ?

Si c'est cela, j'interpréterai ton fichier comme un fichier csv et non pas un txt.
De ce fait ton traitement java se fera sur un fichier de type csv ce qui d'autant plus facile à gérer pour ton cas.

Essaie donc d'explorer la piste du csv.
0
Stevendep Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, entre chaque nom de station et le numéro de la ligne il y a un ";".

Et la difficulté de la chose est que je dois le faire avec le TXT, quand il m'en a parlé mon tuteur ça avait l'air simple mais comme je ne connais rien au Java c'est vachement tendu ! Car je connais aucune fonctions, je sais pas vraiment comment toutes les utiliser ...
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
Si ton fichier est comme ceci :

1;La Défense - Grande Arche;Esplanade de La Défense;Pont de Neuilly;....
2;.....
3;.....

Attention : uniquement des points virgules

Tu utilises la classe CSVReader et le tout est joué.

https://thierry-leriche-dessirier.developpez.com/tutoriels/java/charger-donnees-fichier-csv-5-min/
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   6
 
Rien ne t'empêche à partir du fichier TXT de le copier en fichier temporaire .csv et de traiter le csv puis le supprimer après.

Pour ce faire :

File source = new File ("C:/Users/Développement/Desktop/ListeStationsMetro.txt")
File dest = new File ("C:/Users/Développement/Desktop/ListeStationsMetro.csv")
source.renameTo(dest);


et là tu as ton fichier txt et ton fichier csv
0
Stevendep Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne dois pas passer par du CSV, je dois utiliser mon TXT et exploiter mon TXT ....

Je l'ai déjà lu avec le Java, le code que j'ai mis en haut marche mais je voudrais maintenant l'exploiter
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
"je ne trouve plus rien, nulle part, (...) je suis complètement perdu avec en prime un mal de crâne à force de fouiller partout !"

Tout est sur le site d'Oracle :
https://docs.oracle.com/javase/7/docs/api/
https://docs.oracle.com/javase/tutorial/index.html

Ce que tu veux faire est très simple, exemple :

// Lecture du fichier
	
LinkedList<String[]> liste = new LinkedList<String[]>();
Scanner sc = new Scanner(new File("ListeStationsMetro.txt"));

while (sc.hasNextLine())
	liste.add(sc.nextLine().split(";"));
sc.close();

// Affichage des données

for (String[] tab : liste)
{
	System.out.println("Ligne "+tab[0]);
	for (int i=1; i<tab.length; i++)
		System.out.println("\t"+tab[i]);
}
0