今天做一个File的Demo的时候,新建文件时,假如父目录不存在会报错!
这时我加了一个判断,在创建文件之前判断父目录是否存在
if(file.getParentFile()==null){
file.getParentFile().mkdirs();
}
用了上面的代码发现没用,上面代码是我查了文档以后写的
上面是中文文档
我又查看了英文文档
按照文档说明 getParentFile(),加入父目录不存在应该是返回null,但是好像不起作用,不知道是不是我理解错了
后面我改成如下代码
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
/**
* 创建新文件
* @param newFilePath 新文件路径
* @param canOver 是否可以覆盖,true文件存在时覆盖,false文件存在时不覆盖
* @return 成功返回true,失败返回false
*/
public static Boolean createNewFile(String newFilePath,Boolean canOver ){
try {
File file=new File(newFilePath);
if(file.exists()&&canOver){//文件存在,并且可以覆盖
file.delete();
System.out.println("文件:"+newFilePath+"[已经存在].....正在删除重建");
}else if(file.exists()&&!canOver){//文件存在,并且不可以覆盖
System.out.println("文件:"+newFilePath+"[已经存在,创建失败]");
return false;
}
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
return file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args){
if(createNewFile("E:\\dellTestDir\\sad.txt")){
System.out.println("创建成功");
}else{
System.out.println("创建失败");
}
}