Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 系统找不到FileWriter指定的路径_Java_Filewriter_File Not Found - Fatal编程技术网

Java 系统找不到FileWriter指定的路径

Java 系统找不到FileWriter指定的路径,java,filewriter,file-not-found,Java,Filewriter,File Not Found,我有以下代码: private static void saveMetricsToCSV(String fileName, double[] metrics) { try { FileWriter fWriter = new FileWriter( System.getProperty("user.dir") + "\\output\\" + fileTimestamp + "

我有以下代码:

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());
        }
    }
private static void saveMetricsToCSV(字符串文件名,双[]指标){
试一试{
FileWriter fWriter=新的FileWriter(
System.getProperty(“user.dir”)+“\\output\\”+
fileTimestamp+“”+fileDBSize+”-“+fileName+”.csv”
);
BufferedWriter csvFile=新的BufferedWriter(fWriter);
对于(int i=0;i<4;i++){
对于(int j=0;j<5;j++){
write(String.format(“%,10f;”,metrics[i+j]);
}
write(System.getProperty(“line.separator”);
}
csvFile.close();
}捕获(IOE异常){
System.out.println(e.getMessage());
}
}
但我得到了这个错误:

C:\Users\Nazgulled\Documents\Workspace\Só Amigos\output\1274715228419_5000-List-ImportDatabase.csv (系统找不到路径 (指定)

知道为什么吗

如果有必要的话,我正在Windows7上使用NetBeans…

我猜“输出”目录不存在。尝试添加:

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

通常,只有父目录存在时,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);

您可以使用
getParentFile
()确保父目录存在。下面将检查父目录是否存在,如果不存在,则创建它

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

路径和文件存在吗?还有一个次要的问题,使用path.Combine()通常是一种很好的形式……不,但是当我尝试写入而不是读取时,我认为路径/文件会自动创建……path.Combine可能对Java:-)不是一个很好的建议。我想您可能需要将“myFile.getParent()”(返回一个字符串)替换为“myFile.getParentFile()”。