Bonjour,
J'ai une exception quand je fais un "createNewFile" qui se produit sous Mac mais pas sous windows.
L'exception est la suivante :
Voici le code de la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 java.io.IOException: No such file or directory at java.io.UnixFileSystem.createFileExclusively(Native Method) at java.io.File.createNewFile(File.java:883) at com.apologic.rcp.util.DesktopUtil.createFile(DesktopUtil.java:67) at com.apologic.rcp.util.DesktopUtil.createFile(DesktopUtil.java:30) at com.apologic.rcp.util.DesktopUtil.openAsposeExcel(DesktopUtil.java:177) at com.apologic.rcp.swing.container.dialog.ExportSortableJDialog.valider(ExportSortableJDialog.java:452) at com.apologic.rcp.swing.container.dialog.ExportSortableJDialog.bt_validerActionPerformed(ExportSortableJDialog.java:261) ...
L'exception se produit sur "fichierTemp.createNewFile()".
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 String chemin = repertoire + nom + tmp + extension; File fichierTemp = new File(chemin); //verifie si droit d'écriture if (fichierTemp.exists() && !fichierTemp.canWrite()) { continu = false; } //si fichier existe alors tente de le supprimer if (continu && fichierTemp.exists()) { //confirme remplacement continu = Langue.getConfirm(null, Langue.getLabel("msg.container.file_doublon_replace") + "\n[" + fichierTemp.getPath() + "]"); if (continu && !fichierTemp.delete()) { continu = false; } } //tente de le creer if (continu) { try { if (fichierTemp.createNewFile()) { //supprime le fichier quand la JVM s'arrete if (temp) { fichierTemp.deleteOnExit(); } fichier = fichierTemp; } else { if (fichierTemp.exists()) { Langue.getMessageWarning(null, Langue.getLabel("msg.container.droit_repertoire") + repertoire); } else { Langue.getMessageWarning(null, Langue.getLabel("msg.container.droit_repertoire") + chemin); } } } catch (IOException e) { Langue.getMessageWarning(null, Langue.getLabel("msg.container.droit_repertoire") + repertoire); } }
Sous windows cela fonctionne sans problème. En revanche sous Mac, l'exception est générée.
J'ai essayé de lancer l'application en root mais le problème est le même.
J'ai également vérifié qu'aucun fichier du même nom n'existe, et que le répertoire est bien existant.
Quelqu'un a t-il déjà rencontré ce problème ? Serait-ce plus un problème de code ou par rapport au poste (droits, ...) ?
Merci
Partager