2009-08-04 16 views
12

Forse un po 'imbarazzante, ma dopo qualche ora non riesco ancora a creare un file in Java ...Come creare un file in java (non in una cartella)?

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

Che cosa mi manca qui?

risposta

20

Prova a creare le dirs genitore prima:

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

ringraziamento, confondendo che Java non sembra differenziare i file da cartelle – Gerard

+2

Come Java dovrebbe farlo? Cos'è "a", un file o una directory? Perché "foo.dat" dovrebbe essere un file e non una directory? Devi dire a Java quello che vuoi. Se dici a Java di creare una directory denominata "index.html", creerà felicemente una directory con il nome di "index.html". :) – Bombe

+0

la tua osservazione proviene dal punto di vista dei programmatori, la mia confusione è stata dal punto di vista dell'utente, perché un utente di computer distingue tra cartelle e file; java potrebbe aver scelto di sostenere gli esseri umani, ad es. con un enumer di file – 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; 
     } 
Problemi correlati