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

avec Java Discussion :

Problème de lecture d'un répertoire


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème de lecture d'un répertoire
    Bonjour à tous,
    sur un petit programme qui se propose d'afficher des images provenant d'un répertoire, j'ai installé deux boutons 'précédent' et 'suivant' dont l'action, si elle est évidente, revient au début ou à la fin du répertoire quand on atteint les limites. Le bouton suivant ne pose pas de problème, mais le 'précédent' bloque. voici le bout de code (c'est peut-être pas d'une grande ingéniosité, et c'est peut-être même "sale" mais bon..je suis autodidacte...mais aussi ouvert à toutes améliorations)

    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
     
    public void listeRepertoire (File repertoire)
    { // ces six premières lignes ont été chopées sur la faq, merci à Clément Cunin
      if (repertoire.isDirectory)
      {
        File [] list = repertoire.listFiles(extension); //'extension' est un filtre pour ne lire que des images
        if (list!=null)
        {
          for (int i =0; i<list.length;i++)
          {
            list.repertoire (list[i]);
     
            //c'est là que j'interviens :
            if (list[i].equals(f))
            { 
              if(i+1 ==list.length)
              {
                fichierSuivant=list[0];
                break;
              }
              else
              {
                fichierSuivant=list[i+1];
              }  //ce bloc fonctionne
     
              //à partir de là, ça déconne :
              if (i==0)
              {
                fichierPrecedent=list[list.length-1];
                break.
              }
              else
              {
                fichierPrecedent=list[i-1];
              }
            }
          }
        }
      }
    }
    En fait, j'arrive à afficher le dernier fichier en faisant 'precedent', mais après ça bloque, je ne peux plus remonter encore (mais je peux toujours avancer)..
    Je pense que le problème est lié à la boucle 'for' et à l'incrémentation de 'i', mais je ne comprends pas ...
    Si vous avez un peu de temps pour me répondre, merci beaucoup...

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Il nous faut aussi le code qui utilise cette fonction.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    ok,
    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
    68
    69
    70
    71
    72
     
    class precedentListener implements ActionListener {
    		@Override
    		public void actionPerformed (ActionEvent pre) {
    			if (pre.getSource() == prec) {
    				listing liste=new listing();
    				liste.listeRepertoire(dir);
     
    				f=fichierPrecedent;
     
    				try {
    					img = ImageIO.read(f);
     
     
    				} catch (IOException e) {
    					e.printStackTrace();
    				}effetImage eft = new effetImage();
    				eft.redimensionner();
    				pic.repaint(); 
     
    			}
    		}
    	}
     
     
     
    class listing{
     
    		FileFilter ext = new FileFilter () {
    			public boolean accept (File f) {
    				if (f.isDirectory()) return true;
    				else if ( f.getName().endsWith(".jpg")) return true;
    				//etc...
    				else return false;
    			}
    		};
    		public  void listeRepertoire (File repertoire){
    			texteCheck.append(repertoire.getAbsolutePath()+newLine );
    			if (repertoire.isDirectory()) {
     
    				File [] list = repertoire.listFiles(ext);
    				if (list!=null) {
    					for (int i = 0; i<list.length;i++){
     
    						listeRepertoire(list[i]);	
    						nombreFichier=list.length;
    						 if (list[i].equals(f) ) { 
     
     
    							if(i+1==list.length) {
    								fichierSuivant =list[0];
    								break;
    							}else {
    							fichierSuivant=list[i+1];
    							}
     
    							if (i==0) {
     
    							fichierPrecedent=list[fichierActuel];
    								break;
    							}else {
     
     
    								fichierPrecedent=list[i-1];
    							}
     
     
    						} 
     
     
     
    						}

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Quelle est cette variable "fichierActuel" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    désolé... j'ai repiqué le code en supprimant des tests... j'ai oublié d'enlever cette variable...en fait c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (i==0) {
    fichierPrecedent=list[list.length-1];
    break;
    }
    la variable 'fichierActuel' était un doublon de 'i'
    merci en tous cas à vous de répondre à mes petits problèmes...

    (d'ailleurs, si jamais quelqu'un ici a la patience de regarder le code complet -400 lignes- et me dire les améliorations à faire, je serais ravi et infiniment reconnaissant).

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    C'est le bazar. Re-poste un code minimal compilable reproduisant le problème.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Réponses: 17
    Dernier message: 18/08/2014, 15h17
  2. [TFileStream] Problème de lecture de string
    Par Pedro dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2004, 13h06
  3. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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