[Java IO] Nom de fichier
Résolu
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:
Comment éviter d'avoir ce problème ?
Merci d'avance!
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
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!
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS
2 réponses
-
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...)
@+ -
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; }