لا يمكن للنظام العثور على المسار المحدد مع FilewRiter
-
04-10-2019 - |
سؤال
لدي هذا الرمز:
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 (لا يمكن للنظام العثور على المسار المحدد)
أي فكرة لماذا؟
أنا أستخدم NetBeans على Windows 7 إذا كان مهمًا ...
المحلول
بشكل عام ، سيتم إنشاء ملف غير موجود بواسطة 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
(Java Doc) للتأكد من وجود دليل الوالدين. سيؤدي ما يلي إلى التحقق من وجود دليل الأصل ، وإنشائه إذا لم يحدث.
File myFile = new File(fileName);
if(!myFile.getParentFile.exists()) {
myFile.getParentFile.mkdirs();
}
أعتقد أن دليل "الإخراج" غير موجود. حاول إضافة:
new File(System.getProperty("user.dir") + File.separator + "output").mkdir();
لا تنتمي إلى StackOverflow