2012-03-07 10 views
8

Actualmente tengo el problema de que encuentro una excepción que nunca vi antes y es por eso que no sé cómo manejarla.¿Está cansado de deshacerse de una excepción java.io.Exception en java.io.WinNTFileSystem.createFileExclusively?

Quiero crear un archivo según los parámetros dados, pero no funcionará.

public static Path createFile(String destDir, String fileName) throws IOException { 
     FileAccess.createDirectory(destDir); 

     Path xpath = new Path(destDir + Path.SEPARATOR + fileName); 

     if (! xpath.toFile().exists()) { 
      xpath.toFile().createNewFile(); 
      if(FileAccess.TRACE_FILE)Trace.println1("<<< createFile " + xpath.toString()); 
     } 
     return xpath; 
    } 


    public static void createDirectory(String destDir) { 
     Path dirpath = new Path(destDir); 
     if (! dirpath.toFile().exists()) { 
      dirpath.toFile().mkdir(); 
      if(TRACE_FILE)Trace.println1("<<< mkdir " + dirpath.toString()); 
     } 
    } 

Cada vez que paso la aplicación de la siguiente excepción se produce:

java.io.IOException: The system cannot find the path specified 
at java.io.WinNTFileSystem.createFileExclusively(Native Method) 
at java.io.File.createNewFile(Unknown Source) 
[...] 

¿Cómo deshacerse de él? (Estoy usando Win7 64 bits por cierto)

Respuesta

9

El problema es que no se puede crear un archivo a menos que ya exista toda la ruta que lo contiene: su directorio principal inmediato y todos los elementos superiores encima.

Si tiene una ruta c: \ Temp y no hay subdirectorios debajo de ella, e intenta crear un archivo llamado c: \ Temp \ SubDir \ myfile.txt, eso fallará porque C: \ Temp \ SubDir doesn ' t existe.

Antes

xpath.toFile().createNewFile(); 

añadir

xpath.toFile().mkdirs(); 

(no estoy seguro de si mkdirs() requiere solo la ruta en el objeto; si lo hace, a continuación, cambiar esa nueva línea de

new File(destDir).mkdirs(); 

De lo contrario, obtendrá su nombre de archivo creado como una subdirección ¡Ctory en cambio! Puede verificar cuál es correcto consultando su Explorador de Windows para ver qué directorios creó.)

+0

gracias, la solución _new File (destDir) .mkdirs(); _ funcionó! – keinabel

+0

De nada. – JTeagle

Cuestiones relacionadas