解决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)也可创建文件,看情况使用

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Flyway进行Java数据库版本控制的操作指南

    使用Flyway进行Java数据库版本控制的操作指南

    今天我们将深入探讨如何使用Flyway进行Java数据库版本控制,Flyway是一个流行的数据库迁移工具,用于管理和自动化数据库模式的演变,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • Spring interceptor拦截器配置及用法解析

    Spring interceptor拦截器配置及用法解析

    这篇文章主要介绍了Spring interceptor拦截器配置及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • java实现仿windows 字体设置选项卡实例

    java实现仿windows 字体设置选项卡实例

    本篇文章介绍了java仿windows 字体设置选项卡,可实现类似windows字体设置效果,需要的朋友可以参考下。
    2016-10-10
  • 一文带你了解FastExcel的使用

    一文带你了解FastExcel的使用

    我们知道 EasyExcel 在作者从阿里离职之后就停止维护了,但在前两周 EasyExcel 原作者推出了他的升级版框架 FastExcel,下面小编就来和大家聊聊FastExcel的具体使用吧
    2024-12-12
  • 浅谈Redis的key和value大小限制

    浅谈Redis的key和value大小限制

    这篇文章主要介绍了浅谈Redis的key和value大小限制,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • SpringBoot实现支付宝沙箱支付的完整步骤

    SpringBoot实现支付宝沙箱支付的完整步骤

    沙箱支付是一种用于模拟真实支付环境的测试工具,它提供了一个安全的测试环境,供开发者在不影响真实交易的情况下进行支付功能的开发和测试,这篇文章给大家介绍了SpringBoot实现支付宝沙箱支付的完整步骤,需要的朋友可以参考下
    2024-04-04
  • 详解Spring 基于 Aspect 注解的增强实现

    详解Spring 基于 Aspect 注解的增强实现

    本篇文章主要介绍了详解Spring 基于 Aspect 注解的增强实现,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • Java和JVM的重载识别,重写方法是怎样进行的

    Java和JVM的重载识别,重写方法是怎样进行的

    这篇文章主要介绍了Java和JVM的重载识别,重写方法是怎样进行的,违章围绕了Java和JVM的重载识别,重写方法展开相关资料,需要的小伙伴可以参考一下,希望对你的工作或学习有所帮助
    2022-01-01
  • Mybatis使用@one和@Many实现一对一及一对多关联查询

    Mybatis使用@one和@Many实现一对一及一对多关联查询

    本文主要介绍了Mybatis使用@one和@Many实现一对一及一对多关联查询,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java并发编程之Semaphore(信号量)详解及实例

    Java并发编程之Semaphore(信号量)详解及实例

    这篇文章主要介绍了Java并发编程之Semaphore(信号量)详解及实例的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论