参考: https://blog.csdn.net/qq_23958061/article/details/83687685
https://bbs.csdn.net/topics/390240130
// 我以前是这样创建文件夹的...
if(!f.exist()){
f.createNewFile();
}
后来就想这样创建的时候会不会自动创建文件夹呢?
翻了翻源码… 没找到实现(太菜了
百度一下 找到啦!https://bbs.csdn.net/topics/390240130
创建文件的时候会不会自动创建文件夹呢?
不会
那么要如何做呢?
if(!f.getParentFile().exists()){
// 先创建文件夹,最后在加一步创建文件的操作
f.getParentFile().mkdirs();
f.createNewFile();
}
mkdirs or mkdir ?
mkdir是用来创建单层文件夹的
mkdirs是用来创建多级文件夹的
public boolean mkdirs() {
if (exists()) {
return false;
}
if (mkdir()) {
return true;
}
File canonFile = null;
try {
canonFile = getCanonicalFile();
} catch (IOException e) {
return false;
}
File parent = canonFile.getParentFile();
return (parent != null && (parent.mkdirs() || parent.exists()) &&
canonFile.mkdir());
}
这里贴下源码 前面乱七八糟的我们不看,就看最后的return
我们可以看到 mkdirs 是基于 mkdir 的递归实现的