Exploiter fichier TXT en java

Fermé
Stevendep Messages postés 7 Date d'inscription jeudi 14 juin 2012 Statut Membre Dernière intervention 27 décembre 2012 - 17 oct. 2012 à 16:55
KX Messages postés 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 17 oct. 2012 à 17:35
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
17 oct. 2012 à 16:59
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 jeudi 14 juin 2012 Statut Membre Dernière intervention 27 décembre 2012
17 oct. 2012 à 17:04
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 dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
17 oct. 2012 à 17:01
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 jeudi 14 juin 2012 Statut Membre Dernière intervention 27 décembre 2012
17 oct. 2012 à 17:07
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 dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
17 oct. 2012 à 17:09
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 dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
17 oct. 2012 à 17:12
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 jeudi 14 juin 2012 Statut Membre Dernière intervention 27 décembre 2012
17 oct. 2012 à 17:16
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 16760 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
17 oct. 2012 à 17:35
"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