Bonjour,

J'ai une exception quand je fais un "createNewFile" qui se produit sous Mac mais pas sous windows.

L'exception est la suivante :

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)
...
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
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);
            }

        }
L'exception se produit sur "fichierTemp.createNewFile()".

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