Java – mkdir()不写目录

我正在尝试创建一个目录,但它似乎每次都失败了? 我已经检查过它也不是权限问题,我有完全权限写入该目录。 提前致谢。

这是代码:

private void writeTextFile(String v){ try{ String yearString = convertInteger(yearInt); String monthString = convertInteger(month); String fileName = refernce.getText(); File fileDir = new File("C:\\Program Files\\Sure Important\\Report Cards\\" + yearString + "\\" + monthString); File filePath = new File(fileDir + "\\"+ fileName + ".txt"); writeDir(fileDir); // Create file FileWriter fstream = new FileWriter(filePath); try (BufferedWriter out = new BufferedWriter(fstream)) { out.write(v); } }catch (Exception e){//Catch exception if any System.err.println("Error: " + e.getMessage()); } } private void writeDir(File f){ try{ if(f.mkdir()) { System.out.println("Directory Created"); } else { System.out.println("Directory is not created"); } } catch(Exception e){ e.printStackTrace(); } } public static String convertInteger(int i) { return Integer.toString(i); } Calendar cal = new GregorianCalendar(); public int month = cal.get(Calendar.MONTH); public int yearInt = cal.get(Calendar.YEAR); 

这是输出:

 Directory is not created Error: C:\Program Files\Sure Important\Report Cards\2012\7\4532.txt (The system cannot find the path specified) 

这可能是因为File.mkdir仅在父目录存在File.mkdir创建目录。 尝试使用File.mkdirs创建所有必需的目录。

这是适合我的代码。

 private void writeDir(File f){ try{ if(f.mkdirs()) { System.out.println("Directory Created"); } else { System.out.println("Directory is not created"); } } catch(Exception e){ // Demo purposes only. Do NOT do this in real code. EVER. // It squashes exceptions ... e.printStackTrace(); } } 

我做的唯一改变是将f.mkdir()更改为f.mkdirs()并且它有效

我认为@La bla bla已经确定了它,但为了完整性,以下是我能想到的所有可能导致调用File.mkdir()失败的事情:

  • 路径名中的语法错误; 例如,文件名组件中的非法字符
  • 包含最终目录组件的目录不存在。
  • 已经有了这个名字的东西。
  • 您无权在父目录中创建目录
  • 您无权在路径上的某个目录中执行查找
  • 要创建的目录位于只读文件系统上。
  • 文件系统出现硬件错误或网络相关错误。

(显然,在这个问题的背景下,可以迅速消除其中一些可能性……)