2010-05-24 18 views
5

ho questo codice:Il sistema non può trovare il percorso specificato con FileWriter

private static void saveMetricsToCSV(String fileName, double[] metrics) { 
     try { 
      FileWriter fWriter = new FileWriter(
        System.getProperty("user.dir") + "\\output\\" + 
        fileTimestamp + "_" + fileDBSize + "-" + fileName + ".csv" 
      ); 

      BufferedWriter csvFile = new BufferedWriter(fWriter); 

      for(int i = 0; i < 4; i++) { 
       for(int j = 0; j < 5; j++) { 
        csvFile.write(String.format("%,10f;", metrics[i+j])); 
       } 

       csvFile.write(System.getProperty("line.separator")); 
      } 

      csvFile.close(); 
     } catch(IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

Ma ottengo questo errore:

C:\Users\Nazgulled\Documents\Workspace\Só Amigos\output\1274715228419_5000-List-ImportDatabase.csv (The system cannot find the path specified)

Qualsiasi idea del perché?

sto utilizzando NetBeans su Windows 7 se è importante ...

+0

esiste quel percorso e file? –

+2

anche il punto minore, è generalmente buona forma per utilizzare Path.Combine() ... –

+1

No, ma come sto cercando di scrivere e non leggere, ho pensato che il percorso/file sarebbe stato creato automaticamente ... –

risposta

11

In generale, un file inesistente verrà creato da Java solo se esiste la directory padre. Si dovrebbe controllare/creare la struttura di directory:

String filenameFullNoPath = fileTimestamp + "_" + fileDBSize + "-" 
     + fileName + ".csv"; 
    File myFile = new File(System.getProperty("user.dir") + File.separator 
     + "output" + File.separator + filenameFullNoPath); 
    File parentDir = myFile.getParentFile(); 
    if(! parentDir.exists()) 
     parentDir.mkdirs(); // create parent dir and ancestors if necessary 
    // FileWriter does not allow to specify charset, better use this: 
    Writer w = new OutputStreamWriter(new FileOutputStream(myFile),charset); 
+0

Penso che potrebbe essere necessario sostituire "myFile.getParent()" (che restituisce una stringa) con "myFile.getParentFile()". – Glennn

+0

@Glenn: hai ragione, corretto – leonbloy

1

direi che la directory "uscita" non esiste. Prova ad aggiungere:

new File(System.getProperty("user.dir") + File.separator + "output").mkdir(); 
1

È possibile utilizzare getParentFile (Java Doc) per assicurarsi che esista la directory padre. Quanto segue controllerà che la directory principale esista e la creerà se non lo fa.

File myFile = new File(fileName); 
if(!myFile.getParentFile.exists()) { 
    myFile.getParentFile.mkdirs(); 
} 
Problemi correlati