Frage

Ich habe diesen Code:

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

Aber ich diesen Fehler:

C: \ Users \ Nazgulled \ Documents \ Workspace \ Só Amigos \ output \ 1274715228419_5000-List-ImportDatabase.csv (Das System kann den Weg nicht finden angegeben)

Jede Idee, warum?

Ich bin mit NetBeans auf Windows 7, wenn es darauf ankommt ...

War es hilfreich?

Lösung

Im Allgemeinen ist eine nicht existierende Datei wird nur von Java erstellt werden, wenn das übergeordnete Verzeichnis existiert. Sie sollten den Verzeichnisbaum prüfen / erstellen:

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

Andere Tipps

Sie können mit getParentFile ( Java Doc ) um sicherzustellen, dass das übergeordnete Verzeichnis existiert. Im Folgenden wird prüfen, ob das übergeordnete Verzeichnis existiert, und es schaffen, wenn dies nicht der Fall.

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

Ich würde vermuten, dass die „Ausgabe“ Verzeichnis existiert nicht. Versuchen Sie:

new File(System.getProperty("user.dir") + File.separator + "output").mkdir();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top