
java中关于IO关于File对像创建文件夹的问题
在学到JAVA中关于IO里的FILE类对文件进行操作时有一个问题。我在设写一段代码,给了一个绝对的路径,这是一个文件夹目录的路径。当这个路径文件夹存在就删除(首先我只是先...
在学到JAVA中关于IO里的FILE类对文件进行操作时有一个问题。我在设写一段代码,给了一个绝对的路径,这是一个文件夹目录的路径。当这个路径文件夹存在就删除(首先我只是先写个空文件夹名,里面没有明细)。然后就接着创建。如果不存在就直接创建。大概的代码就是File F=new File(path);if (F.exists() && F.isDirectory()){//删除过程我不写了。因为可以正常执行删除。用的是F.delete。返回true.紧接着创建。 boolean b2=F1.mkdir();
if (b2){
System.out.println("文件夹创建成功!");
} else {
System.out.println("文件夹创建失败!");
return;
}
} else {
boolean b3=F1.mkdir();
if (b3){
System.out.println("文件夹创建成功!");
} else {
System.out.println("文件夹创建失败!");
return;
}
}我的问题是:两个创建过程,区别就只是一个紧接着删除之后再创建。为什么删除后创建的那个创建会失败。PS:有朋友说因为我用的是mkdir所以导致,这是测试,果然改成mkdirs就可以了。可是我将c:\Test这个对像,即File F=new File("C:\Test"),这个对像delete应该也只是将Test删除吧,不至于连C:\这个父目录也删除吧,也就是父目录应该是存在的,为什么这个时候用mkdir会创建失败呢? 展开
if (b2){
System.out.println("文件夹创建成功!");
} else {
System.out.println("文件夹创建失败!");
return;
}
} else {
boolean b3=F1.mkdir();
if (b3){
System.out.println("文件夹创建成功!");
} else {
System.out.println("文件夹创建失败!");
return;
}
}我的问题是:两个创建过程,区别就只是一个紧接着删除之后再创建。为什么删除后创建的那个创建会失败。PS:有朋友说因为我用的是mkdir所以导致,这是测试,果然改成mkdirs就可以了。可是我将c:\Test这个对像,即File F=new File("C:\Test"),这个对像delete应该也只是将Test删除吧,不至于连C:\这个父目录也删除吧,也就是父目录应该是存在的,为什么这个时候用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());
}
至于失败的原因,你把源码完整贴出来看看
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());
}
至于失败的原因,你把源码完整贴出来看看
追问
mkdirs会创建不存在的父目录我是知道,可是我就一级目录,即C盘下创建一个Test文件夹而已。我在delete对象时,只是删除的是目标对象,并没有删除父目录,C盘怎么可能删除的掉,这样子的话。重新mkdir怎么会失败,奇怪。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询