Java中mkdir()和mkdirs()的区别及说明

 更新时间:2023年11月02日 10:03:14   作者:八戒,你又涨价了哎  
这篇文章主要介绍了Java中mkdir()和mkdirs()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mkdir()和mkdirs()的区别

boolean mkdir() : 创建此抽象路径名指定的目录。

boolean mkdirs() : 创建此抽象路径名指定的目录,包括创建不存在的父目录。

mkdir:只能用来创建文件夹,且只能创建一级目录,如果上级不存在,就会创建失败。

mkdirs:只能用来创建文件夹,且能创建多级目录 ,如果上级不存在,就会自动创建。(创建文件夹多用此)

Java的mkdir()与mkdirs()引发的悲剧---java的mkdir()方法无法创建文件目录

昨晚深夜在做项目的文件上传,在上传之前要先判断指定的文件目录是否存在,如果不存在就先创建改目录。

因为之前已经做过类似的功能了,所以就把判断文件目录以及创建的代码直接copy过来了,然而很郁闷的是,一模一样的代码,这回却遇到一个特别奇葩的问题:

我要判断的文件目录

   ServletContext context = ServletActionContext.getServletContext();
   // 获得当前web应用所在目录下file文件夹的绝对路径
	String path = context.getRealPath("/CloudSpaceFile/CustomerFile/"
							+ customerName + "/" + typesName + "/");
	File f = new File(path);// 判断文件夹是否存在,如果不存在就创建
	if (!f.exists()) {
		 f.mkdir();
		System.out.println("editCustApplicaAction.add()文件夹不存在------------"+f);
		}
		boolean t = f.exists();
	    if (t == true) {
		System.out.println("真的//");
	    }else {
			System.out.println("假的的//");
		      }

我之前做的目录判断、创建等功能的代码

     ServletContext context = ServletActionContext.getServletContext();
		// 获得当前web应用所在目录下file文件夹的绝对路径
 
		String path = context
				.getRealPath("/CloudSpaceFile/ResourceFile/SystemApplication/"
						+ typesName + "/");
		//System.out.println("editCustApplicaAction.add()+++++++++++++++++++"+path);
		File f = new File(path);// 判断文件夹是否存在,如果不存在就创建
		if (!f.exists()) {
			f.mkdir();
		}

因为是凌晨了,宿舍断网了,所以不能查找想要的知识,只能自己琢磨出现这种问题的原因,结果搞了大半天也没弄清楚原因。

现在查找了资料才知道问题所在:

其中第二次的customerName以及typesName是用户的用户名以及他所选择的文件名,其中 customerName 这个文件目录之上的目录已经存在的,也就是说,我现在要判断“****/CloudSpaceFile/CustomerFile/” 这个目录下的 customerName 这个文件夹是否存在,以及customerName这个文件夹下面的typesName这个文件夹也是否存在(也就是说,这里有可能要创建多层目录)。

第一次的的“****/CloudSpaceFile/CustomerFile/”目录已经存在了,要判断的是“typesName”这个目录是否存在,也就是说这里只要创建一层目录

问题就出在这里!!!:

我用创建单层目录的mkdir()方法去创建多层目录!!!

知道问题所在以后就容易解决了:

只要把调用的方法mkdir()改为mkdirs()就行了。

总结

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

相关文章

  • 对SpringBoot项目Jar包进行加密防止反编译

    对SpringBoot项目Jar包进行加密防止反编译

    最近项目要求部署到其他公司的服务器上,但是又不想将源码泄露出去,要求对正式环境的启动包进行安全性处理,防止客户直接通过反编译工具将代码反编译出来,本文介绍了如何对SpringBoot项目Jar包进行加密防止反编译,需要的朋友可以参考下
    2023-10-10
  • Spring Event观察者模式事件监听详解

    Spring Event观察者模式事件监听详解

    这篇文章主要介绍了Java Spring Event事件监听详情解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Spring MVC中的拦截器案例演示

    Spring MVC中的拦截器案例演示

    拦截器可以拦截所有的请求,也可以只拦截满足指定的请求, Spring MVC 的拦截器类似于过滤器,用来执行预处理和后处理操作,本文给大家介绍Spring MVC中的拦截器案例演示,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • 解析java.library.path和LD_LIBRARY_PATH的介绍与区别

    解析java.library.path和LD_LIBRARY_PATH的介绍与区别

    这篇文章主要介绍了java.library.path和LD_LIBRARY_PATH的介绍与区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • Kafka之kafka-topics.sh的使用解读

    Kafka之kafka-topics.sh的使用解读

    这篇文章主要介绍了Kafka之kafka-topics.sh的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot中Date格式化处理的三种实现

    SpringBoot中Date格式化处理的三种实现

    Spring Boot作为一个简化Spring应用开发的框架,提供了多种处理日期格式化的方法,本文主要介绍了SpringBoot中Date格式化处理实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • @Configuration与@Component作为配置类的区别详解

    @Configuration与@Component作为配置类的区别详解

    这篇文章主要介绍了@Configuration与@Component作为配置类的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • FeignClientFactoryBean创建动态代理详细解读

    FeignClientFactoryBean创建动态代理详细解读

    这篇文章主要介绍了FeignClientFactoryBean创建动态代理详细解读,当直接进去注册的方法中,一步步放下走,都是直接放bean的定义信息中放入值,然后转成BeanDefinitionHolder,最后在注册到IOC容器中,需要的朋友可以参考下
    2023-11-11
  • spring的事务传播属性REQUIRED_NESTED原理

    spring的事务传播属性REQUIRED_NESTED原理

    这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED原理,在spring中,要想使用事务中的回滚点,可以使用传播属性NESTED,需要的朋友可以参考下
    2023-05-05
  • 基于swing实现窗体拖拽和拉伸

    基于swing实现窗体拖拽和拉伸

    这篇文章主要为大家详细介绍了基于swing实现窗体拖拽和拉伸,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12

最新评论