2009-10-22 7 views
0

Faisant suite à une question précédente, pour une raison quelconque lorsque j'utilise le code suivant:Impossible de créer un fichier dans C: TEMP

final File tmpDir = new File("C:/TEMP/", zipFile.getName()); 

    if(!tmpDir.mkdir() && tmpDir.exists()) { 
     System.err.println("Cannot create: " + tmpDir); 
     System.exit(0); 
    } 

Je reçois une erreur (Impossible de créer: C: \ TEMP \ aZipFile) cependant, si j'utilise ce qui suit:

final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName()); 

    if(!tmpDir.mkdir() && tmpDir.exists()) { 
     System.err.println("Cannot create: " + tmpDir); 
     System.exit(0); 
    } 

cela fonctionne parfaitement. Mon problème est que je veux utiliser C: \ TEMP car cela est cohérent avec le reste du projet sur lequel je travaille.

Encore une fois, j'utilise Java 1.4 sur Windows XP et JDeveloper IDE.

Répondre

3
if(!tmpDir.mkdir() && tmpDir.exists()) 

shouldn 't ceci soit:

if(!tmpDir.mkdir() && !tmpDir.exists()) 
+0

Pourquoi l'upvote? Est-ce que cela répond à la question? – Graviton

+0

Oui, la première partie de la phrase tente de créer le répertoire temp, retournant true si elle crée ou fausse si elle ne peut pas créer ou existe déjà, ce posibility est couvert par la deuxième partie du cas. Alors que le if est vrai seulement si le répertoire temporaire n'existe pas et qu'il ne peut pas être créé – Telcontar

0

Est-ce parce que vous n'avez pas accès en écriture à ce dossier ou "C:/TEMP/" TEMP n'existe pas?

1

Eh bien, si System.getProperty("java.io.tmpdir") ne retourne pas 'C: \ TEMP' ce n'est pas la même chose. Bien que je suggère de compter sur java.io.tmpdir, vous pouvez également vous assurer que C: \ TEMP existe - ou le créer si nécessaire: ``;

File temp = new File("C:/TEMP/"); 
if (!temp.exists()) temp.mkdir(); 
File tmpDir = new File(temp, zipFile.getName()); 

Sinon, vous pouvez changer votre code à

final File tmpDir = new File(System.getProperty("java.io.tmpdir"), zipFile.getName()); 

// note the change from mkdir to mkdirs 
if(!tmpDir.mkdirs() && !tmpDir.exists()) { 
    System.err.println("Cannot create: " + tmpDir); 
    System.exit(0); 
} 

EDIT: Je viens de voir la réponse par atomice et il a raison: il est !tmpDir.exists() plutôt que tmpDir.exists()

0

Avez-vous comparé le résultat de « System.getProperty (« java.io.tmpdir ») » avec ce que vous essayez? En outre, sur WindowsXP, je choisirais "C: \ Temp \" comme nom de répertoire.

0

Y a-t-il un fichier dans le répertoire temporaire avec le nom que vous voulez verrouiller? Pourquoi ne pas utiliser File.createTempFile, n'est-ce pas ce que vous essayez d'archiver?

1

Questions connexes