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 :

Optimisation de code


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut Optimisation de code
    Bonjour je cherche comme mon titre l'indique à optimiser ma fonction

    Elle a pour but dans un repertoire donné de recupérer les noms de fichiers PDF et uniquement PDF

    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
     
        public static String[] getListFichierNom()
        {
            File repertoire = new File(Informations.rootPath); File []listeFilePath = repertoire.listFiles();
            int i, j, num;
     
            //recuperation du nombre de fichiers valides
            for (i = 0, num = 0; i < listeFilePath.length ; i++)
            {
                int longueur = listeFilePath[i].getName().length();
                int index = listeFilePath[i].getName().lastIndexOf(".pdf");
                if((longueur-index == 4 && longueur > 3))
                {
                    num++;
                }
            }
            //Enregistrement dans l'objet liste des fichiers valides
            String[] liste = new String[num];
            for (i = 0, j = 0 ; i < listeFilePath.length||j <num ; i++)
            {
                int longueur = listeFilePath[i].getName().length();
                int index = listeFilePath[i].getName().lastIndexOf(".pdf");
                if((longueur-index == 4 && longueur > 3))
                {
                    liste[j] = listeFilePath[i].getName();
                    j++;
                }
            }
            return liste;
        }
    Je pense qu'il doit y avoir bien plus simple que ce que fais en sachant que ce code fonctionne

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 351
    Par défaut
    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
     
        public static String[] getListFichierNom()
        {
            File[] listeFilePath = new File(Informations.rootPath).listFiles();
     
            List<String> list = new ArrayList<String>();
            String nameFile;
            for (File file:listeFilePath)
            {
                nameFile = file.getName();
                if(nameFile.contains(".pdf"))
                {
                    list.add(nameFile);
                }
            }
            return list.toArray(new String[list.size()]);
        }
    Ce que tu fais semble correct , je me dis qu'il est plus simple quand même d'utiliser la fonction contains(".pdf").

    Et si tu as pas absolument besoin d'un tableau de String , tu peux renvoyer une ArrayList.

    Mais bon ici c'est pas vraiment de "l'optimisation" , c'est juste pour rendre le code plus "lisible". De plus de l'optimisation sur ce genre de portion de code sert strictement à rien.

    Allez bon courrage !

  3. #3
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Merci de ta reponse

    Je n'ai pas utilisé contains pour eviter d'ajouter un fichier nommé par exemple : fichier.pdf.doc

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Pourquoi ne pas utiliser la classe FileNameFilter et la méthode associée de la classe File, ainsi que endsWith ? ce qui donne quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	public static String[] getListFichierNom() {
    		File repertoire = new File(Informations.rootPath);
    		return repertoire.list(new FilenameFilter() {
    			@Override
    			public boolean accept(File rep, String name) {
    				return name.endsWith(".pdf");
    			}
    		});
    	}
    C'est plus concis, plus clair, plus adapté je pense

    A plus

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    @George7 : +1

    Toutefois il serait préférable de faire une comparaison en ignorant la case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     name.toLowerCase().endsWith(".pdf");

    a++

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    On peut aussi utiliser JFileChooser (sans faire un choix!!!):

    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
    JFileChooser chooser = new JFileChooser();
             chooser.setCurrentDirectory(new File(".")); // dans le répertoire courant
     
             chooser.setFileFilter
                (
                   new javax.swing.filechooser.FileFilter()
                   {
                      public boolean accept(File f)
                      {
                         if(f.getName().toLowerCase().endsWith(".pdf")) // si true
                            System.out.println(f.getName());  
                         return f.getName().toLowerCase().endsWith(".pdf");
                      }
     
                      public String getDescription()
                      {
                         return "";
                      }
                   });
    Cordialement,

    Dan

  7. #7
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Merci à tous pour vos reponse

    Je ne connaissais pas cette classe
    donc j'ai decidé d'integrer la solution de george7 en ignorant la casse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public static String[] getListFichierNom()
        {
    	File repertoire = new File(Informations.rootPath);
     
    	return repertoire.list(new FilenameFilter()
            {
                @Override
                public boolean accept(File rep, String name)
                {
    		return name.toLowerCase().endsWith(".pdf");
                }
    	});
        }
    Par contre si maintenant je veux faire un tri par date (du plus récent au plus ancien)
    Comment puisje proceder sur ce code?

    Je pense qu'il faut tester le .lastModified(); de chaque fichier avant et de les comparer 1 à 1

    Si vous avez des idées je suis preneur. Je me lance de mon coté

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

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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