我试图使其尽可能容易。
例:
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();
}