Extraction de plusieurs données dans des fichiers texte
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Extraction de plusieurs données dans des fichiers texte



  1. #1
    Theo V

    Extraction de plusieurs données dans des fichiers texte


    ------

    Bonjour
    Je viens ici pour vous demander votre aide.
    J'ai un dossier dans lequel il y a 300 .jpg et 300 fichier .txt, 1 images correspond a un fichier texte ce qui veut dire qu'il ont le même nom, juste pas la même extension.
    Mon objectif est d'extraire diverses lignes dans ces 300 fichier .txt mais j'ai un problème :
    - Voici le code en images que j'ai fait juste qu'a présent avec quelques commentaires pour plus de lisibilité.
    - Le problème c'est que quand je lance le programme, la console d'eclipse ne m'affiche rien du tout et je ne sais pas du tout pourquoi, c'est la 1 ère fois que j'utilise la classe File
    J'espère que des personnes pourront m'éclairer car ça fait 1 jours et demi que je suis dessus et je m'arrache les cheveux
    J'avais pour idée de :
    - Lister tous les fichiers présent dans le répertoire
    - Les stocker dans un tableau
    - Parcourir ce tableau
    - et ensuite faire une condition du style - Si le fichier se termine par ".txt" alors je fais la suite d'instruction
    Mais ca ne fonctionne malheureusement pas
    En vous remerciant par avance pour votre aide

    Pièces jointes supprimées

    -----
    Dernière modification par JPL ; 13/06/2019 à 15h38.

  2. #2
    JPL
    Responsable des forums

    Re : Extraction de plusieurs données dans des fichiers texte

    Les programmes doivent être postés dans le corps du message entourés par les balises [Code...[/Code]. Merci.
    Dernière modification par JPL ; 13/06/2019 à 15h38.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    Theo V

    Re : Extraction de plusieurs données dans des fichiers texte

    Ça devrait être mieux comme ça
    Code:
    public class Main {
    
    	public static void main(String[] args) {
    
    		//Recuperation tous les fichiers d'un repertoire 
    		File repertoire = new File("E:\\Apollo_7");
    		//Et les mets dans un tableau
    		File[] files=repertoire.listFiles();
    
    		//Lecture des fichiers texte du repertoire
    		try {
    			//Boucle For permettant de parcourir le tableau
    			for(int i = 0; i < files.length; i++) {	
    				//Permet d'obtenir le nom des fichiers dans le tableau
    				String fileName = files[i].getName();
    				if(fileName.equals(".txt")) {
    					// Ces lignes de codes permettent d'ouvrir les fichiers texte et de pouvoir les lires
    					InputStream ips = new FileInputStream(fileName);
    					InputStreamReader ipsr = new InputStreamReader(ips);
    					BufferedReader br = new BufferedReader(ipsr);
    					String ligne;
    					while ((ligne=br.readLine())!=null) {
    						//Suite de condition permettant d'extraire des lignes grace a leurs debut
    						if (ligne.startsWith("Photographer :")){
    							System.out.println(ligne);
    						}else {
    							if(ligne.startsWith("Photo URL")) {
    								System.out.println("Photo URL : "+ligne.substring(66,77));
    							}else{
    								if(ligne.startsWith("Taken Date")) {
    									System.out.println(ligne);
    								}else {
    									if(ligne.startsWith("AS")) {
    										System.out.println("Titre : "+ligne);
    									}else{
    										if(ligne.startsWith("Ap")) {
    											System.out.println("Description : "+ligne);
    										}else {
    											if(ligne.startsWith("N",1)){
    												System.out.println("Tags : "+ligne.substring(0));
    											}
    										}
    									}		
    								}
    							}
    						}
    					}
    					br.close();
    				}	
    			}
    		}
    		catch (Exception e) {
    			System.out.println(e.toString());
    		}
    	}
    }

  4. #4
    Ikhar84
    Animateur Informatique

    Re : Extraction de plusieurs données dans des fichiers texte

    Le code est vraiment dur à lire sur un smatphone (indentation et succession de if/else...).

    Mais aprés une rapide lecture
    [JAVA]if(fileName.equals(".txt"))[/java]
    Renvois toujours false car aucun fichier ne portera EXACTEMENT le nom ".txt"...

    Tu peux déjà filtrer le ListFile() avec un FilenameFilter... ça enlevera déjà un if...

    Ou utiliser une méthode du genre de FilenameUtils.getExtension...

    Ou encore récuperer le dernier index de l'occurence du point (l'index du dernier point), puis faire un substring depuis cet index...

    Etc...
    J'ai glissé Chef !

  5. A voir en vidéo sur Futura
  6. #5
    Theo V

    Re : Extraction de plusieurs données dans des fichiers texte

    J'avais testé deux méthodes pour choper l'extension

    Première méthode :

    Code:
    // Boolean qui nous serviras plus tard
    boolean bName;
    
    // Permet de rechercher le motif specifie donc ce qui est dans la parenthese
    					Pattern uName = Pattern.compile("[a-zA-Z0-9_.+-]+\\.txt");
    					//Rechercher le motif specifie precedent dans la chaine fileName
    					Matcher mUname = uName.matcher(fileName);
    					// Boolean qui permet de confirmer qu'on a bien trouve le motif specifie dans la chaine
    					bName = mUname.matches();
    					//Si on l'a trouve, on affiche les fichiers avec le motif specifie
    					if (bName) {
    						System.out.println(mUname.group());
    					}
    et la deuxième méthode que j'ai essayé étais
    Code:
    for (int i = 0; i < files.length; i++) {
    				// Permet d'obtenir le nom des fichiers dans le tableau
    				String fileName = files[i].getName();
    				String extension = fileName.substring(22,25);
    				System.out.println(fileName); // Me sers d'affichage pour que je puisse voir a quoi correspond fileName
    				if (fileName.equals(extension))
    Mais bon aucun des deux fonctionne

    Tester avec LastIndexOf ?
    Dernière modification par Theo V ; 13/06/2019 à 17h09.

  7. #6
    albanxiii
    Modérateur

    Re : Extraction de plusieurs données dans des fichiers texte

    Bonjour,

    Pour récupérer l'extension d'un fichier sous windows, il y a https://docs.microsoft.com/en-us/cpp...h?view=vs-2019 Mais ça n'est peut-être pas le plus facile à utiliser.
    Not only is it not right, it's not even wrong!

  8. #7
    LeMulet

    Re : Extraction de plusieurs données dans des fichiers texte

    Citation Envoyé par Theo V Voir le message
    - Le problème c'est que quand je lance le programme, la console d'eclipse ne m'affiche rien du tout et je ne sais pas du tout pourquoi, c'est la 1 ère fois que j'utilise la classe File
    J'espère que des personnes pourront m'éclairer car ça fait 1 jours et demi que je suis dessus et je m'arrache les cheveux
    C'est pour éviter que les programmeurs ne deviennent tous chauves qu"on a inventé le debugger.

    Voir par exemple ici pour Eclipse : https://jmdoudoux.developpez.com/cou...ipse-debug.php

    La technique de base, c'est de mettre le programme en pause à des endroits clefs, et d'y faire du pas à pas pour vérifier l'état des variables et le résultat des conditions.
    Comme ça vous ne pourrez pas dire : Je ne sais pas ce qui se passe (surtout au bout d'1 journée !!!), mais vous pourrez dire : Je ne comprend pas pourquoi ma valeur ou mon test ne fourni pas le résultat attendu (l'attendu, vous le connaissez normalement).
    Bonjour, et Merci.

  9. #8
    pm42

    Re : Extraction de plusieurs données dans des fichiers texte

    Citation Envoyé par Theo V Voir le message
    J'avais testé deux méthodes pour choper l'extension
    Tu as simplement à faire fileName.endsWith(".txt") au lieu de l'horrible fileName.equals(".txt")

  10. #9
    Ikhar84
    Animateur Informatique

    Re : Extraction de plusieurs données dans des fichiers texte

    @LeMulet: m'en parles pas, j'ai passé la nuit dernière sur une erreur de cast vicieuse, le debugger m'a mis sur l'instruction posant problèmes, mais la vrai origine venait d'une mise à jour d'une table et un copier/coller trop rapide qui gardait le nom de la variable pour les deux tables... plusieurs heures à bloquer devant l'EDI avant d'aller vérifier ma table puisque le code était ok et que l'insertion des données de test datait...

    Sans exagerer, j'ai dû mettre une heure avant de comprendre que l'erreur ne venait pas du code mais des données entrées, et particulièrement vicieuse puisque une des données était bien initialisée et tout mais se chopait une "null" valeur en cours de route...

    Sans debugger cela aurait pris des années !

    Donc, avant même d'apprendre à coder, il faut apprendre à se servir des outils, en particulier du debugger, en particulier si le code lève une exception non capturée, on ne sait où !
    J'ai glissé Chef !

Discussions similaires

  1. [Batch] Modifier plusieurs fichiers texte d'un dossier
    Par MisterT2000 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 23/04/2016, 10h59
  2. récupèration de données contenues dans un fichier texte
    Par lepetitchimiste dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 14/08/2015, 13h11
  3. Extraction de données de plusieurs fichiers .txt
    Par Graphalex dans le forum Programmation et langages, Algorithmique
    Réponses: 13
    Dernier message: 06/04/2015, 09h54
  4. Edition de plusieurs fichiers texte en même temps ...
    Par djamoussa dans le forum Logiciel - Software - Open Source
    Réponses: 16
    Dernier message: 27/01/2012, 21h33
  5. Lecture en C dans plusieurs fichiers
    Par invite70eda27f dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 09/06/2008, 14h50