[Java IO] Nom de fichier

Résolu/Fermé
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 - 7 avril 2010 à 20:37
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 - 7 avril 2010 à 21:05
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 samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
7 avril 2010 à 20:47
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 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
7 avril 2010 à 21:05
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