2011-09-15 14 views
1

Je suis en train de créer un nouveau fichier dans Windows 7 en utilisantjava Impossible de créer un nouveau fichier dans Windows 7?

file.createNewFile() 

mais le fichier est pas créé et je suis arrivé à l'exception suivante

Message: 
The system cannot find the path specified 
Stack Trace: 
[java.io.IOException: The system cannot find the path specified, 
    at java.io.WinNTFileSystem.createFileExclusively(Native Method), 
    at java.io.File.createNewFile(File.java:883), 
    at com.mercury.mtf.actions.file.CreateEmptyFileTask.execute(CreateEmptyFileTask.java:56), 
    at com.mercury.mtf.actions.file.CreateEmptyFileAction.execute(CreateEmptyFileAction.java:42), 
    at com.mercury.mtf.core.AbstractAction.run(AbstractAction.java:50), 
    at com.mercury.mtf.core.Unit.runUnitAction(Unit.java:347), 
    at com.mercury.mtf.core.Unit.executeUnitAction(Unit.java:176), 
    at com.mercury.mtf.core.Unit.run(Unit.java:121), 
    at com.mercury.mtf.core.execution.DefaultUnitExecutor.call(DefaultUnitExecutor.java:24), 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303), 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138), 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98), 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207), 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886), 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908), 
    at java.lang.Thread.run(Thread.java:619)] 

Je suis sûr que le chemin existe, mais J'ai réalisé que le dossier marqué comme en lecture seule. J'ai essayé d'enlever le drapeau de lecture seulement mais je ne peux pas obtenir ceci pour fonctionner.

+0

A quoi ressemble le chemin? –

Répondre

4

Assurez-vous que le caractère de séparateur de chemin est correct. Vous pouvez utiliser une barre oblique simple ou deux barres obliques inversées. Par exemple,

File f = new File("C:\\Documents and Settings\\thandasoru\\My Documents\\temp.txt"); 
f.createNewFile(); 
+0

Cela pourrait être résolu en utilisant 'File.separator' ou' File.separatorChar'. BTW, ces deux derniers champs statiques ne suivent pas les conventions de nommage Java. –

+0

ah, exactement! J'ai oublié qu'il y a une propriété File.separatorChar. le code mentionné ci-dessus est sale, je dirais ;-) – thandasoru

0

Si le fichier est temporaire, vous pouvez utiliser cette fonction et vous pouvez oublier tous les problèmes d'autorisations:

File.createTempFile("prefix", "suffix") 
0

Utilisez File newFile=new File(folderName+chipItems[i]); plutôt que d'utiliser File newFile=new File(folderName+chipItems[i], "w");. Ce sera OK. Évitez le mode Fichier lorsque vous souhaitez donner des fonctionnalités comme la commande tactile Unix.

Questions connexes