[Java IO] Nom de fichier
Résolu
zzzer
Messages postés
938
Statut
Membre
-
zzzer Messages postés 938 Statut Membre -
zzzer Messages postés 938 Statut Membre -
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
A voir également:
- [Java IO] Nom de fichier
- Jeux java itel - Télécharger - Jeux vidéo
- Fichier epub - Guide
- Fichier bin - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
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...)
@+
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:
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;
}