[Java IO] Nom de fichier

Résolu
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   -  
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

Je rencontre actuellement un problème sur lequel j'aurais besoin d'un coup de pouce.
J'ai une fonction qui me permet d'exporter un JPanel sous forme de fichier JPEG. L'utilisateur est donc invité à choisir un dossier et saisir le nom du fichier à l'aide d'un JFileChooser.
Mon problème est que si l'utilisateur saisit un nom avec des caractères non autorisés (exemple, le caractère ':' ou '?'), aucune exception ne sera lancée et un fichier va quand même être créé, mais son nom sera tronqué au niveau du caractère interdit. Exemple: si l'utilisateur tape "toto:tata.jpeg", un fichier vide nommé "toto" sera créé.

Voici mon code:

try {
                        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(newImageFile)); // création du fichier
                        ImageIO.write(tamponSauvegarde, "JPG", newImageFile); // tamponSauvegarde contient l'image et newImageFile est l'objet File dans lequel je l'exporte
                        out.close();
                        System.out.println("ok, created file: " + newImageFile.getName());
                    }
                    catch (IOException ee) {
                        JOptionPane.showMessageDialog(null, "File creation impossible: wrong file name?",
                                null, JOptionPane.ERROR_MESSAGE);
                        exportAsImage.doClick(); // réaffiche le JFileChooser
                    }



Comment éviter d'avoir ce problème ?

Merci d'avance!

A voir également:

2 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
tu peux peut-être utiliser une expression régulière, pour tester que le nom saisi est bien formé...(si erreur lancer une exception...)
@+
0
zzzer Messages postés 906 Date d'inscription   Statut Membre Dernière intervention   181
 
J'ai en fait développé une petite fonction qui teste chaque caractère de la String pour voir s'il fait partie des caractères interdits.
La voici, pour ceux que ça pourrait intéresser:

public boolean isThisStringValid(String s)
    {
        for (int i=0 ; i<s.length() ; i++)
        {
            if (s.charAt(i) == '/' || s.charAt(i) == '\\' ||
                s.charAt(i) == ':' || s.charAt(i) == '*' ||
                s.charAt(i) == '?' || s.charAt(i) == '"' ||
                s.charAt(i) == '<' || s.charAt(i) == '>' ||
                s.charAt(i) == '|')
                return false;
        }
        if (s.startsWith("con."))
                return false;
        return true;
    }
0