我试图使其尽可能容易。

例:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());


mkdir()mkdirs()都返回false°_°。如果我使用双反斜杠\\(如"\\non_existing_dir\\someDir"但是,两者都可以工作(创建目录):

如果在此之后执行.toURI(),则会收到:file:/Users/MyName/Desktop/%5Cnon_existing_dir%5CsomeDir/

如果我.getPath()我收到:\non_existing_dir\someDir

如果我.getCanonicalPath(),我收到:/Users/MyName/Desktop/\non_existing_dir\someDir



所以我想代替这个结果:

使用.toURI()接收:file:/Users/MyName/Desktop /non_existing_dir/someDir/

.getPath()接收:/non_existing_dir/someDir

并且.getCanonicalPath()接收:/Users/MyName/Desktop /non_existing_dir/someDir


在此先感谢大家。

最佳答案

如果non_existing_dir不存在,则可以检查getParentFile()并使用mkdir()创建它。

还要避免使用File.separator在OS之间出现问题。

String filename = "non_existing_dir"  + File.separator + "someDir";

File  f = new File(filename);
if (!f.exists()) {
    if (!f.getParentFile().exists()) {
         // make the dir
         f.getParentFile().mkdir();
    }
    f.mkdir();
}

07-26 03:11