2009-08-04 20 views
12

Tal vez un poco embarazoso, pero después de algunas horas Todavía no se puede crear un archivo en Java ...¿Cómo crear un archivo en Java (no en una carpeta)?

File file = new File(dirName + "/" + fileName); 
try 
{ 
    // --> ** this statement gives an exception 'the system cannot find the path' 
    file.createNewFile(); 
    // --> ** this creates a folder also named a directory with the name fileName 
    file.mkdirs(); 
    System.out.println("file != null"); 
    return file; 
} 
catch (Exception e) 
{ 
    System.out.println(e.getMessage()); 
    return null; 
} 

Qué me estoy perdiendo aquí?

Respuesta

20

Trate de crear los directorios padres de la primera:

File file = new File(dirName + File.separator + fileName); 
try { 
    file.getParentFile().mkdirs(); 
    file.createNewFile(); 
    System.out.println("file != null"); 
    return file; 
} 
catch (Exception e) 
{ 
    System.out.println(e.getMessage()); 
    return null; 
} 
+0

gracias, confundiendo que Java no parece diferenciar los archivos de las carpetas – Gerard

+2

¿Cómo debería hacer que Java? ¿Qué es "a", un archivo o un directorio? ¿Por qué debería "foo.dat" ser un archivo y no un directorio? Tienes que decirle a Java lo que quieres. Si le dices a Java que cree un directorio llamado "index.html", creará felizmente un directorio con el nombre de "index.html". :) – Bombe

+0

su observación proviene de la perspectiva de los programadores, mi confusión fue desde la perspectiva del usuario, porque un usuario de computadora diferencia entre carpetas y archivos; Java podría haber elegido apoyar a los seres humanos, p. con un tipo de archivo enumeración – Gerard

1
String dirName="c:\\dir1\\dir2"; 
    String fileName="fileName.txt"; 
    File file = new File(dirName + "/" + fileName); 
    try { 
     new File(dirName).mkdirs(); // directory created here 
     file.createNewFile(); // file created here 
     System.out.println("file != null"); 
     return file; 
    }catch(Exception e) 
     { 
      System.out.println(e.getMessage()); 
      return null; 
     } 
Cuestiones relacionadas