解决java使用file.createNewFile()创建文件时报错目录不存在的问题
更新时间:2025年06月20日 09:49:04 作者:鲸落ж
这篇文章主要介绍了解决java使用file.createNewFile()创建文件时报错目录不存在的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
使用file.createNewFile()创建文件时报错目录不存在
普通创建文件代码
String strPath = "E:\\test\\test1\\test.txt";
File file = new File(strPath);
if(!file.exists())){
file.createNewFile();
}上述这段代码,当E:\test\test1目录不存在时,createNewFile()执行会报错:
java.io.IOException:Parent directory of file does not exist
String strPath = "E:\\test\\test1\\test.txt";
File file = new File(strPath);
if(!file.exists())){
file.mkdirs();
}这段代码会创建目录
E:\test\test1\test.txt\
String strPath = "E:\\test\\test1\\test.txt";
File file = new File(strPath);
File fileParent = file.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
}
file.createNewFile();上述这段代码可以成功创建文件。
原因:
先判断文件所处目录是否存在,如果不存在则递归创建目录;注意是mkdirs()而不是mkdir()。
mkdir:只能用来创建文件夹,且只能创建一级目录,如果上级不存在,就会创建失败。mkdirs:只能用来创建文件夹,且能创建多级目录 ,如果上级不存在,就会自动创建。(创建文件夹多用此)createNewFile:只能用来创建文件,且只能在已存在的目录下创建文件,否则会创建失败。FileOutputStream os=new FileOutputStream(file)也可创建文件,看情况使用
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Mybatis使用@one和@Many实现一对一及一对多关联查询
本文主要介绍了Mybatis使用@one和@Many实现一对一及一对多关联查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09


最新评论