7

私はこのコードを持っています:

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

しかし、私はこのエラーが発生します:

C:\Users\Nazgulled\Documents\Workspace\Só Amigos\output\1274715228419_5000-List-ImportDatabase.csv (指定されたパスが見つかりません)

理由はありますか?

問題があれば、Windows 7 で NetBeans を使用しています...

4

3 に答える 3

14

一般に、存在しないファイルは、親ディレクトリが存在する場合にのみJavaによって作成されます。ディレクトリツリーを確認/作成する必要があります。

  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);
于 2010-05-24T15:56:08.120 に答える
2

getParentFile( Java Doc ) を使用して、親ディレクトリが存在することを確認できます。以下は、親ディレクトリが存在することを確認し、存在しない場合は作成します。

File myFile =  new File(fileName);
if(!myFile.getParentFile.exists()) {
     myFile.getParentFile.mkdirs();
}
于 2013-12-13T05:28:46.413 に答える
1

「出力」ディレクトリが存在しないと思います。追加してみてください:

new File(System.getProperty("user.dir") + File.separator + "output").mkdir();
于 2010-05-24T15:50:07.483 に答える