IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Ecrire dans un fichier texte


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut Ecrire dans un fichier texte
    Bonjour,

    J'essaye d'écrire des valeurs (int) dans un fichier texte.
    Je toutes les images se trouvant dans un dossier et je compte les pixels noirs de cette image.
    Et je veux afficher dans mon fichier texte le nombre de pixels pour chaque image.

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    public class DetectionEtFichierTexte {
     
     
        public static void displayImage(File file, BufferedImage img) {
     
            int cptnoir = 0;
            int height = img.getHeight();
            int width = img.getWidth();
     
     
     
                    for (int x = 0; x < width; x++)
                    for (int y = 0; y < height; y++) {
     
                        int p = img.getRGB(x, y);
                        int r = (p>>16)&0xff;
     
                        if(r == 0){
                                cptnoir++;
                            }
     
     
            }
     
            System.out.println(" "+ file +  " " + cptnoir+ " ");
     
           //écrire les résultats dans un fichier texte
     
    try {  
     
                File filetxt = new File("chemin\\Classification.txt");
     
            // if file doesnt exists, then create it
                if (!filetxt.exists()) {
                filetxt.createNewFile();
                    		}
     
     
                FileWriter fw = new FileWriter(filetxt.getAbsoluteFile());
                BufferedWriter bw = new BufferedWriter(fw);
                bw.write(file + " = " + cptnoir + "");
     
                bw.close();
     
                System.out.println("Done");
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
        }
     
     public static void main(String[] args) {
     
     
            File path = new File("chemin");
            for (File file : path.listFiles()) {
                try {
                    BufferedImage img = ImageIO.read(file);
                    if (img != null)
                        displayImage(file, img);
                } catch (IOException e) {
                    continue;
                }
             }   
     
        }
    Donc j'ai bien un fichier texte qui s'affiche mais à l'intérieur je n'ai que la dernière valeur de mon compteur "cptnoir".
    Pourtant dans ma console j'ai bien Les différentes valeurs affichées grace à mon System.out.println

    Avez-vous une idée merci ?

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Ah j'ai trouvé, FileWriter peut prendre en compte un boolean en le mettant à "true" le code s'écrit ligne après ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileWriter fw = new FileWriter(filetxt.getAbsoluteFile(),true);
    J'ai une autre question :

    Je sais lire tous les fichiers présent dans un dossier. Comment faire pour lire les fichiers dans plusieurs dossiers.
    Exemple j'ai 3 dossiers :
    Dossier 1 -> fichier 1 fichier2
    Dossier 2 -> fichier 1 fichier2
    Dossier 3 -> fichier 1 fichier 2

    Je veux pour lire les fichiers du dossier 1 puis du 2 puis du 3

    merci

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si tu sais lire les fichiers d'un dossier, tu sais forcément lire les fichiers de plusieurs dossiers... il suffit de refaire ce que tu fais sur un dossier pour les autres... c'est un peu le principe de base la répétition en programmation... Par exemple, en mettant le code de traitement d'un dossier en méthode, avec le dossier en paramètre, que tu peux ainsi appeler avec plusieurs valeurs différentes de paramètres.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Alors je ne vois pas trop comment écrire la méthode.
    Je vous montre la totalité de mon code.

    Dans mon main j'indique le nom du répertoire à explorer et je fais une boucle pour explorer tous les fichiers. (mes fichiers sont des images)
    J'appel également la méthode "displayImage()"

    Dans cette méthode je compte le pixels noirs présents dans l'image et j'affiche dans un fichier texte ce compteur pour chaque image.

    Comment je dois m'y prendre pour créer une méthode qui rappel ma méthode pour chaque dossiers ?

    Je suis un peu perdu

    Merci

  5. #5
    Membre confirmé Avatar de freddou17
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 341
    Points : 566
    Points
    566
    Par défaut
    salut,

    tu remontes d'un niveau dans ton arborescence et pour chaque item du dossier parent (identifié par un objet File) tu appelles la méthode isDirectory(); Si ça vaut true tu lis son contenu et pour chaque élément tu appelles ton fonction displayImage();

    Tu peux aussi externaliser dans un fichier properties les paths des différents dossiers et dans ton main tu boucles sur celles-ci...

    bon courage
    ++
    "Aucun de nous ne sait ce que nous savons tous, ensemble."
    Lien vers mon appli Funcash n'hésitez pas à donner votre avis

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu parcours les fichiers du dossier 1 comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    File path = new File("chemin");
            for (File file : path.listFiles()) {
                try {
                    BufferedImage img = ImageIO.read(file);
                    if (img != null)
                        displayImage(file, img);
                } catch (IOException e) {
                    continue;
                }
             }
    et bien si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String[] chemins = {"chemin1", "chemin2","chemin3"};
    for( String chemin : chemins ) {
            File path = new File( chemin);
            for (File file : path.listFiles()) {
                try {
                    BufferedImage img = ImageIO.read(file);
                    if (img != null)
                        displayImage(file, img);
                } catch (IOException e) {
                    continue;
                }
             }  
    }
    ça parcourt les trois dossiers chemin1, chemin2, chemin3... c'est bien ce que tu cherches à faire, non ?

    Sinon, tu peux également parcourir une arborescence, comme te l'as indiqué @freddou17 :

    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
    public static void main(String[] args) {
    /*...*/
    displayImages(new File( name ));
    /*...*/
    }
    private static void displayImages(File file) {
             if ( file.isDirectory() ) {
                  for (File subfile : file.listFiles()) {
                      displayImages(subFile);
                  }
             }
             else {
                   try {
                      BufferedImage img = ImageIO.read(file);
                      if (img != null)
                        displayImage(file, img);
                    } catch (IOException e) {
                         continue;
                    }
             }
    }

    Au passage, au lieu de ton continue, et de ne pas afficher les erreurs (qui peuvent être utiles le cas échéant), ce serait plus propre de faire quelque chose commen çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	 try {
    			if (isImage(file)) {
    				BufferedImage img = ImageIO.read(file);
    				if (img != null) {
    					displayImage(file, img);
    				}
    			} 
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static boolean isImage(File file) throws IOException {
    	int pos = file.getName().lastIndexOf('.');
    	if ( pos<0 ) {
    		return false;
    	}
    	else { 
    		return ImageIO.getImageReadersBySuffix(file.getName().substring(pos+1)).hasNext();
    	}
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Merci c'est parfait la méthode pour 3 chemins fonctionne bien.
    Le problème c'est que j'ai plus de 100 chemins. Et l'utilisateur doit pouvoir rajouter des dossiers d'images et les analyser sans toucher au code.

    Donc parcourir l'arborescence me parait être une meilleure solution.

    Mais je ne comprends pas bien ce 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
    public static void main(String[] args) {
    /*...*/
    displayImages(new File( name ));
    /*...*/
    }
    private static void displayImages(File file) {
             if ( file.isDirectory() ) {
                  for (File subfile : file.listFiles()) {
                      displayImages(subFile);
                  }
             }
             else {
                   try {
                      BufferedImage img = ImageIO.read(file);
                      if (img != null)
                        displayImage(file, img);
                    } catch (IOException e) {
                         continue;
                    }
             }
    }
    pourquoi supprimer la variable img ? j'en ai besoin pour analyser mon image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static void displayImages(File file)

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    displayImages avec un s à la fin. Ce n'est pas la même méthode : ta méthode, displayImage(File,BufferedImage), tu la conserves. Si tu veux, displayImages(File) (avec un s donc), tu l'appelles parcourirDossierImages() si tu veux.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Moux88 Voir le message
    Le problème c'est que j'ai plus de 100 chemins. Et l'utilisateur doit pouvoir rajouter des dossiers d'images et les analyser sans toucher au code.
    Tu peux très bien faire une interface avec un JFileChooser pour choisir des dossiers, les sauvegarder dans un fichier pour les conserver entre lancement de l'application.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Ah yes !! Merci je n'avais pas vu le "s"

    Super j'ai tout compris

    Je parcours mon dossier -> Si dossier Alors je parcours ce dossier
    -> Sinon J'applique ma fonction sur le fichier

    C'est bien ça ?

    Bon aller dernière question :

    Dans mes dossiers les fichiers ont tous le même début de nom "photo1" "photo2" "photo3"..etc mais il y a aussi d'autres fichiers images sous un autre nom "image1"...
    Je ne veux parcourir que les fichier "photoi"

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Moux88 Voir le message
    Je parcours mon dossier -> Si dossier Alors je parcours ce dossier
    -> Sinon J'applique ma fonction sur le fichier

    C'est bien ça ?
    C'est ça.



    Citation Envoyé par Moux88 Voir le message
    Bon aller dernière question :

    Dans mes dossiers les fichiers ont tous le même début de nom "photo1" "photo2" "photo3"..etc mais il y a aussi d'autres fichiers images sous un autre nom "image1"...
    Je ne veux parcourir que les fichier "photoi"
    Tu peux utiliser un FileFilter ou un FilenameFilter, en argument de la méthode listFiles(). Les deux ont une méthode à implémenter qui retourne un booléen (retourne false si le fichier ne doit pas être récupéré dans le tableau résultat, true s'il doit l'être).

    Exemples :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File[] files = folder.listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.getName().startsWith("photo");
    			}
    		});
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    File[] files = folder.listFiles(new FilenameFilter() {
     
    			@Override
    			public boolean accept(File dir, String name) {
    				return name.startsWith("photo");
    			}
     
    		});
    ou, avec expressions lambda :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File[] files = folder.listFiles(file-> file.getName().startsWith("photo"));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File[] files = folder.listFiles((dir,name)-> name.startsWith("photo"));
    Ou si tu veux un filtre qui cherche les fichiers dont le nom est photo suivi d'un nombre, quelle que soit l'extension, avec une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pattern pattern = Pattern.compile("photo\\d+\\..*");
    File[] files = folder.listFiles((dir,name)-> pattern.matcher(name).matches());
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup désolé comme à chaque fois je ne sais pas trop comment l'appliquer je ne suis pas encore très à l'aise :/

    J'ai placé ce code en dehors de Main dans ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File[] files = folder.listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.getName().startsWith("photo");
    			}
    		});
    Mais ça me donne des erreurs.
    Dans mon main il me reste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public static void main(String[] args) {
     
            displayImages(new File("chemin"));
     
     
        }
    Ce que je comprends c'est que au moment où je detecte que c'est un fichier je dois lu appliquer la methode accept() ?

  13. #13
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    listFiles() ça renvoit tous les fichiers, listFiles(filter), ça ne renvoit que les fichiers pour lesquels filter est un filtre, avec filter de type FileFilter ou FilenameFilter.

    Ce n'est pas en mettant un truc n'importe où dans ta classe que ça va agir sur ton code : les trucs qui agissent sur le code, ils sont toujours dans le code, sinon ils agissent par ailleurs sur autre chose (ou n'agissent pas).

    Donc, là où tu as dans ton code listFiles(), tu mets ce qui suit à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.getName().startsWith("photo");
    			}
    		});
    donc la méthode displayImages devient :
    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
    private static void displayImages(File file) {
             if ( file.isDirectory() ) {
                  for (File subFile : file.listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.getName().startsWith("photo");
    			}
    		})) {
                      displayImages(subFile);
                  }
             }
             else {
                   try {
                      BufferedImage img = ImageIO.read(file);
                      if (img != null)
                        displayImage(file, img);
                    } catch (IOException e) {
                         continue;
                    }
             }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    ah oui merci je comprenais pas la logique.
    Pour chaque fichier contenant "photo" alors appliquer displayImages

    merci

    Bon par contre ça ne fonctionne pas j'ai la ligne 2 du for qui est souligné en rouge ça me met "cannot find symbol symbol : constructor ()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ( file.isDirectory() ) {
                  for (File subfile : file.listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.getName().startsWith("photo");
    			}
    		})) {
                      displayImages(subfile);
                  }
             }

  15. #15
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par Moux88 Voir le message
    Bon par contre ça ne fonctionne pas j'ai la ligne 2 du for qui est souligné en rouge ça me met "cannot find symbol symbol : constructor ()
    As tu bien fais l'import de java.io.FileFilter et pas autre chose ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, c'est java.io.FileFilter et pas javax.swing.filechooser.FileFilter.

    A noter que le filtre ici s'appliquant au parcours des fichiers et dossiers, il faudrait aussi inclure tous les dossiers et pas seulement ce qui commence par "photo", donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ( file.isDirectory() ) {
                for (File subfile : file.listFiles(new FileFilter() {
    			@Override
    			public boolean accept(File pathname) {
    				return pathname.isDirectory() || pathname.getName().startsWith("photo");
    			}
    		})) {
                    displayImages(subfile);
                }
           }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 110
    Points : 58
    Points
    58
    Par défaut
    Merci beaucoup oui j'avais importer le mauvais.
    Tout marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lire/ecrire dans un fichier texte
    Par mello dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 13/06/2006, 12h35
  2. [VB.net]ecrire dans un fichier text
    Par grand_prophete dans le forum Windows Forms
    Réponses: 12
    Dernier message: 04/05/2006, 16h37
  3. Réponses: 6
    Dernier message: 17/12/2005, 19h27
  4. [VB.NET] Ecrire dans un fichier texte...
    Par robert.michel9 dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/12/2005, 14h35
  5. Ecrire dans un fichier text en MFC
    Par soufienne dans le forum MFC
    Réponses: 6
    Dernier message: 05/10/2005, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo