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 :

Gestion de fichier. Nombre disponible. Nom du dernier fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut Gestion de fichier. Nombre disponible. Nom du dernier fichier
    Bonjour,
    En attendant d'avancer sur un autre projet bien plus lourd, j'ai besoin de me faire une application pratique.

    J'aimerais créer des profiles dans des fichier Properties. Je sait d'ailleurs les créer mais il me manque un point qui me paraît crucial.

    Au démarrage de mon application, je vais pointé sur un répertoire connu. Si des fichiers existe, on ouvre un onglet par fichier et on y fait apparaitre les profiles. Ca c'est la partie que je qualifierais de facile.

    Il me faut charger une boucle for allant de 1 à X ou X vaut le nombre de fichier.

    J'en profiterais d'aileurs pour faire une exception personnalisé en cas ou l'on sauterais de 1 à 3 et qu'il manquerais le fichier 2.

    Pour en revenir à la boucle for. Il me faudrais trouvé combien de fichier j'ai de disponible. Comment je puis faire cela ?

    Ensuite, afin de créer de nouveau profile, je vais avoir besoin de connaitre le dernier fichier puis de récupérer le numéro pour faire un n+1.

    Enfin, pour que tout le monde parte sur la même base, j'ai organisé mes fichiers ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //Partie fichier 
    - Personnage (Dossier) 
          + perso1.proprties 
          + perso2.proprties 
          + perso4.proprties 
          + perso5.proprties 
          + perso6.proprties
    Je vous remercie, d'avance, pour votre coup de pouce.
    Cordialement.

  2. #2
    Membre régulier
    Profil pro
    INGENIEUR DE RECHERCHE
    Inscrit en
    Février 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : INGENIEUR DE RECHERCHE

    Informations forums :
    Inscription : Février 2003
    Messages : 74
    Points : 87
    Points
    87
    Par défaut
    Salut :

    Etape 1 : récupérer la liste des fichiers du répertoire désiré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] dirList = new java.io.File("chemin du repertoire").list;
    Etape 2 : Trier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.util.Array.sort(dirList);
    Etape 3 : Récupérer la longueur du tableau pour nommer le fichier à créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int numNextFile;
    numNextFile = dirListe.lenght;
    Le tri n'est pas obligatoire mais çà permet de récupérer le dernier fichier facilement.
    J'ai pas testé mais çà devrait aller.
    Spiale

  3. #3
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    En fait je décompose mon programme en deux parties.
    1) à l'ouverture, regarder si des fichiers existes. Si les fichiers existes, on crée un onglet par fichier et on affiche les données.
    2) si on veux créer un nouveau profile, "perso" + x + ".properties" il faut savoir la valeur X du dernier fichier, soit persoX.properties

    Je pense que je vais commencer par la solution1. Ou d'emblée je vais créer des onglets en fonction des fichiers. Mais déjà, ta réponse me donne un bon point de départ.

    Un grand merci.

  4. #4
    Membre confirmé
    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
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Citation Envoyé par spiale Voir le message
    Etape 2 : Trier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.util.Array.sort(dirList);
    Ce n'est pas plutôt:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.util.Arrays.sort(dirList);
    Cordialement,

    Dan

  5. #5
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Il me faudrais trouvé combien de fichier j'ai de disponible. Comment je puis faire cela ?
    si je vois bien encore sans mes lunette , c'est la seule question que tu as posé et la réponse est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String[] dirList = new java.io.File("chemin du repertoire").list;
    int nombreFichier = dirList.length();

  6. #6
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Pour ma culture générale du java. Pourquoi mettre "String[] variable" ?
    A quoi sert les "[]" ?

    Cordialement.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    comme le nommage des fichiers suit, semble-t-il un convention, il va falloir au passage filtrer la liste, sur base d'un expression régulière du genre "^perso([0-9]+)\\.properties$"
    Cette meme expression pouvant au passage servir aussi à extraire le numéro du fichier

  8. #8
    Membre confirmé
    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
    Points : 459
    Points
    459
    Par défaut
    Salut,

    permet de déclarer (sans l'initialiser) un tableau à une dimension.

    On peut également écrire

    variable étant le nom du tableau.

    À quoi servent les []:

    Par exemple à fixer la taille (en nombre d´éléments) du tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] monTableau = new String[10];
    10 étant le nombre d'éléments numérotés 0 à 9.

    À quoi d'autre ? Par exemple indiquer quel élément on veut créer ou lire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomTableau[3] = "Abcd";
    pour ajouter Abcd dans le 4ème élément

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String unElement = monTableau[6];
    pour récupérer le 7ème élément.

    La valeur [v] doit être une valeur de 0 à 9 dans notre exemple, sinon exception...

    etc...

    Cordialement,

    Dan

  9. #9
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Ok

    Avec les indications de tchize_, je me demande si je ne vais pas tenter quelque chose comme:
    //Récupère la liste des fichiers présents
    String[] dirList = new java.io.File("chemin du repertoire").list;

    //Si pas de fichier, création du fichier 1
    if(dirList = "null") {
    //Voila une bonne occasion pour mettre en application ce que j'ai appris avec tchize_
    String path = "d:\\application\\profils\\profil1.properties";
    //etc...
    }
    else {
    //Si des fichiers existe, ajoute un nouveau ficher à n+1
    //C'est ici que je ne voie pas trop comment faire.
    //Peut être qu'un:
    //filtrage avec ^profil([0-9]+)\\.properties$ sur dirList
    }
    Enfin c'est ainsi que je ferais les choses. Maintenant il y a peut être plus optimisé
    Un exemple concret que je voie un peu ?

  10. #10
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Bon je viens de tester ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Récupère la liste des fichiers présents
            String[] listeFichier = new File(urlApplication + urlDossier).list();
            JOptionPane.showMessageDialog(null, listeFichier, "Message", JOptionPane.INFORMATION_MESSAGE);
    avec succès.

    Soit c'est vide et listeFichier a priori est vide. Vous m'arrêterais si je me trompe, il faut alors que je face un test du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Récupère la liste des fichiers présents
    String[] listeFichier = new File(urlApplication + urlDossier).list();
    if(!listeFichier == "null") {
        //Créer un fichier
    }
    else {
        //regex pour récupérer le dernier numéro
        //créer le fichier suivant a n+1
    }
     
    //suite du code
    Enfin je pense que c'est comme ça qu'il faut que je face.
    Cordialement.

  11. #11
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    change

    Citation Envoyé par Microbulle Voir le message
    if(!listeFichier == "null")
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(! listeFichier == null)
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(listeFichier != null)
    quand on est débutant ,on est innocent .. j'adore!

  12. #12
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    ok
    Par contre, je peux faire comment pour avoir le dernier chiffre du nom de fichier ?

    Je re-édite le post car si j'écris:
    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
     
    //Récupère la liste des fichiers présents
            String[] listeFichier = new File(urlApplication + urlDossier).list();
     
            //Si aucun fichier n'est présent
            if(listeFichier != null) {
                //Création d'un fichier 1
     
                JOptionPane.showMessageDialog(null, "Pas de fichier, création du fichier Perso1.properties", "Message", JOptionPane.INFORMATION_MESSAGE);
            }
            else {
                //Récupère le dernier nom de fichier
     
                //Récupère le numéro du dernier nom
     
                //Ajoute un nouveau fichier avec ne numéro+1
                JOptionPane.showMessageDialog(null, "Création d'un fichier Perso + n +.properties", "Message", JOptionPane.INFORMATION_MESSAGE);
            }
    En fait il ne teste pas ce qui est dans listeFichier mais listeFichier lui même
    Donc mon if, ici, ne fonctionne pas correctement

    Une idée ?

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            //Si aucun fichier n'est présent
            if(listeFichier != null && listeFichier.length>0) {
    par exemple.

    Pour tester si un fichier est valable, je t'ai filé l'expression régulière. Regarde la doc des expression régulière, tu verra qu'il existe une méthode group(int) qui te retourne le contenu de la nième parenthèse de l'expression. Dans ce cas ci group(1) donnera le chiffre du fichier (cf mon post plus haut)

  14. #14
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    Ca fonctionne, effectivement mais en sens inverse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            //Si aucun fichier n'est présent
            if(listeFichier != null && listeFichier.length>0) {
    Mais je me pose cette question. Précédemment, j'avais écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    JOptionPane.showMessageDialog(null, listeFichier, "Message", JOptionPane.INFORMATION_MESSAGE);
    Soi il ne me retournais rien , ce qui ma poussé à pensé qu' un if(listeFichier == null) serais suffisant. Forcé de constaté que ce code n'aboutissait pas.

    Donc j'ai cette question, de débutant, mon String contiendrait-il bien un string?
    Et cette autre question, mon le contenu de mon string est-il soumis au tests de null? J'entends par la que si le test n'a pas aboutit correctement, il faut ajouter un .lengt (Ok mais pourquoi alors un .length seul n'aboutit pas non plus ?)

    Je cherche a éclairer mes lumières avant d'aller plus loin.

    Pour ce qui est du filtre, il est vrai que je n'avais pas saisie ce que tu voulais que je face Tchize_ mais je pense que ça sera bien facile quand j'aurais élucidé ce mystère du String qui ne se teste pas correctement. Mais t'inquiète, je compte bien y arrivé de toute façon

    Afin que tout le monde puisse avoir les mêmes bases que moi. Je vous post mon code actuel.
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
     
    /*
     * Dialog1.java
     *
     * Created on 14 août 2009, 11:03:41
     */
     
    package Application;
     
    import java.io.File;
    import javax.swing.JOptionPane;
    import mb.gflux.GestionDossier;
    import mb.gflux.GestionProperties;
     
    public class Dialog1 extends javax.swing.JDialog {
     
        /** Creates new form Dialog1 */
        public Dialog1(java.awt.Frame parent, boolean modal) {
            super(parent, modal);
            initComponents();
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            jTextField1 = new javax.swing.JTextField();
            jTextField2 = new javax.swing.JTextField();
            jComboBox1 = new javax.swing.JComboBox();
            jComboBox2 = new javax.swing.JComboBox();
            jButton1 = new javax.swing.JButton();
            jComboBox3 = new javax.swing.JComboBox();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
            setTitle("Création d'un profil");
            setResizable(false);
     
            jTextField1.setText("Nom");
            jTextField1.setToolTipText("Nom du personnage joeur.");
     
            jTextField2.setText("Niveau");
            jTextField2.setToolTipText("Niveau du personnage joueur. (1 - 80) ");
     
            jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Aliance - Draneï", "Aliance - Elfe de la nuit", "Aliance - Gnome", "Aliance - Humain", "Aliance - Nain", "Horde - Elfe de sang", "Horde - Mort-vivant", "Horde - Orc", "Horde - Tauren", "Horde - Troll" }));
            jComboBox1.setToolTipText("Race du personnage joueur.");
     
            jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Chaman", "Chasseur", "Démoniste", "Druide", "Guerrier", "Mage", "Paladin", "Prêtre", "Voleur", "Chevalier de la mort" }));
            jComboBox2.setToolTipText("Classe du personnage joueur.");
     
            jButton1.setText("Enregistrer");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
     
            jComboBox3.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Femme", "Homme" }));
            jComboBox3.setToolTipText("Sexe du personnage joueur.");
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jComboBox3, 0, 211, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jComboBox2, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                            .addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addComponent(jButton1))
                    .addContainerGap())
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jComboBox3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButton1)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
     
            pack();
        }// </editor-fold>                        
     
        //Si le bouton sauvegarder est appuyé
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            String urlApplication = new File("").getAbsolutePath(); //La ou se situe l'application
            String urlDossier = "\\Profils\\";
            String nomFichier = "Profil";
     
            //Si le dossier n'existe pas
            if(!new File(urlApplication + urlDossier).exists()) {
                //Création d'un nouveau dossier
                GestionDossier Dossier = new GestionDossier(urlApplication + urlDossier);
                Dossier.nouveauDossier();
            }
     
            //Récupère la liste des fichiers présents
            String[] listeFichier = new File(urlApplication + urlDossier).list();
     
            //Si aucun fichier n'est présent
            if(listeFichier != null && listeFichier.length > 0) {
                //Création d'un fichier 1
     
                JOptionPane.showMessageDialog(null, "Pas de fichier, création du fichier Perso1.properties", "Message", JOptionPane.INFORMATION_MESSAGE);
            }
            else {
                //Récupère le dernier nom de fichier
     
                //Récupère le numéro du dernier nom
     
                //Ajoute un nouveau fichier avec ne numéro+1
                JOptionPane.showMessageDialog(null, "Création d'un fichier Perso + n +.properties", "Message", JOptionPane.INFORMATION_MESSAGE);
            }
        }                                        
     
        /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    Dialog1 dialog = new Dialog1(new javax.swing.JFrame(), true);
                    dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                        public void windowClosing(java.awt.event.WindowEvent e) {
                            System.exit(0);
                        }
                    });
                    dialog.setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JComboBox jComboBox1;
        private javax.swing.JComboBox jComboBox2;
        private javax.swing.JComboBox jComboBox3;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextField jTextField2;
        // End of variables declaration                   
     
    }
    Je tiens à dire que c'est une JDialog modale, donc appelé depuis une jForm standard par la suite de code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     //Depuis le menu. Gestion -> Profil -> Création profil
        private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            //Ouvre une fenêtre modale.
            Dialog1 dialogCreation = new Dialog1(this, true);
            dialogCreation.setVisible(true);
    }
    Je sait que, par cet ajout, j'alourdis quelque peu mon post. Mais quand un comportement ne va pas, c'est qu'une portion cloche. Donc il vaut mieux que tout le monde voie ou ça ne va pas et que nous puissions y remédier.

    Bon et bien je vous remercie encore pour toute votre aide, qui m'apprend et me permet d'avancer.
    A très bientôt.
    Microbulle.

  15. #15
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Et cette autre question, mon le contenu de mon string est-il soumis au tests de null? J'entends par la que si le test n'a pas aboutit correctement, il faut ajouter un .lengt (Ok mais pourquoi alors un .length seul n'aboutit pas non plus ?)
    Il faut distinguer le tables et son contenu. Le test null permet de savoir si le tableau existe. Dans le cas ou il existe, le test length permet de savoir si il contient des données. Pour tester la nullité du contenu, il faut le faire élément par élément, mais ce n'est pas nécessaire ici.

  16. #16
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Il faut distinguer le tables et son contenu. Le test null permet de savoir si le tableau existe. Dans le cas ou il existe, le test length permet de savoir si il contient des données. Pour tester la nullité du contenu, il faut le faire élément par élément, mais ce n'est pas nécessaire ici.

    dans son cas ,il a mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] listeFichier = new File(urlApplication + urlDossier).list();
    donc je pense que le test de nullité suffit

  17. #17
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Tchize_ a raison. J'ai confondue table et contenu de la table.
    Un null irais si je regarde dans la table mais pour regarder dans la table j'ai besoin, aussi, de savoir si elle existe.

    Donc en réalité il aurais, si je décompose, il aurais fallu faire ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Si une table existe {
        //Si un contenu existe {
            //Récupérer la liste, faire un filtre via les expressions régulière
            //Ajouter Perso + n + .properties ou n vaut le contenu du filtre
        //} Aucun fichier donc {
            //Faire un nouveau fichier Perso1.properties
        //}
    //}
    Mais comme la dit Tchize_ aussi, nous pouvons simplifier en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Si une table existe ET que le contenu est remplie {
       //Récupérer la liste, faire un filtre via les expressions régulière
       //Ajouter Perso + n + .properties ou n vaut le contenu du filtre
    //}
     
    //Si une table existe ET que le contenu est vide {
       //Faire un nouveau fichier Perso1.properties
    //}
    p.s. j'ai ajouter des accolades pour isolé les blocs, ici c'est un pseudo code logique pour visualisé ce que j'ai compris. Donc pas d'ambiguïtés sur ce code théorique.

    Ce qui se résume à deux if et non 1 seul if comme je l'avais au départ raisonné.

    Suis-je dans la bonne approche ?
    Cordialement.

  18. #18
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Tchize_ a raison
    ah bon !!

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par slim_java Voir le message
    dans son cas ,il a mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] listeFichier = new File(urlApplication + urlDossier).list();
    donc je pense que le test de nullité suffit
    Soyons clair, si je met un test null et un test sur le nombre d'éléments, c'est parce que le user veux savoir si oui ou non il existe du contenu dans le répertoire (donc finalement si length>0) mais que j'avais pas envie de regarder dans l'api si la méthode renvoyaix null ou un String[0] en cas de folder vide -> Je fais direct les deux test c'est plus rapide :p

    Microbulle: ton deuxième if est, je pense inutile. Tu as deux cas: soit il existe déjà des fichier, soit il n'y en a pas, donc un else devrais suffire.

    Par contre tu devra peut etre faire dans le else un "if le dossier non plus n'existe pas, d'abord le créer"

  20. #20
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Soyons clair, si je met un test null et un test sur le nombre d'éléments, c'est parce que le user veux savoir si oui ou non il existe du contenu dans le répertoire (donc finalement si length>0) mais que j'avais pas envie de regarder dans l'api si la méthode renvoyaix null ou un String[0] en cas de folder vide -> Je fais direct les deux test c'est plus rapide :p
    Pas de problème, je m'informe
    Citation Envoyé par tchize_ Voir le message
    Microbulle: ton deuxième if est, je pense inutile. Tu as deux cas: soit il existe déjà des fichier, soit il n'y en a pas, donc un else devrais suffire.
    Surement. Je voulais décomposé pour y voir plus clair. Du moment que je comprenne qui fait quoi
    D'autant plus que si je fait un seul test en disant juste comme commentaire "//Si les fichiers existe" alors qu'il faudrait plutôt dire "//Test la chaine et le tableau. Si vide.../Si plein". Bref il faut bien que je finisse par comprendre
    Citation Envoyé par tchize_ Voir le message
    Par contre tu devra peut etre faire dans le else un "if le dossier non plus n'existe pas, d'abord le créer"
    Ce n'est pas un problème car il est créer plus haut dans mon source, via une classe, via le post précédent que j'ai mis pour les gérer avec un "mkdirs()".

    Il ne me reste plus qu'à faire le filtre. Donc je vais essayer de le réalisé seul et si je n'y arrive pas, je demander un peu d'aide.

    Encore merci pour toute vos précisions.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] afficher le nom du dernier fichier crée
    Par vbcasimir dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 23/09/2009, 15h41
  2. Réponses: 0
    Dernier message: 02/12/2008, 17h07
  3. [Fichier] changer le nom d'un fichier
    Par karibouxe dans le forum Langage
    Réponses: 2
    Dernier message: 26/03/2006, 21h10
  4. [Fichier] Nombre de ligne dans un fichier texte
    Par NewSer dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2004, 16h58

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