2010-05-24 34 views
5

tengo este código:El sistema no puede encontrar la ruta especificada 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()); 
     } 
    } 

Pero me sale este error:

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

Cualquier idea de por qué?

estoy usando NetBeans en Windows 7 si importa ...

+0

¿existe esa ruta y archivo? –

+2

también un punto menor, en general es una buena forma de usar Path.Combine() ... –

+1

No, pero como estoy tratando de escribir y no leer, pensé que la ruta/archivo se crearía automáticamente ... –

Respuesta

11

En general, Java creará un archivo no existente solo si existe el directorio padre. Usted debe verificar/crear el árbol de directorios:

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

Creo que es posible que deba reemplazar "myFile.getParent()" (que devuelve una Cadena) por "myFile.getParentFile()". – Glennn

+0

@Glenn: tienes razón, arreglado – leonbloy

1

supongo que el directorio "salida" no existe. Intente agregar:

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

Usted puede utilizar getParentFile (Java Doc) para asegurarse de que existe el directorio padre. Lo siguiente verificará si existe el directorio padre y lo creará si no.

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