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()就行了。

总结

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

相关文章

  • java乐观锁原理与实现案例分析

    java乐观锁原理与实现案例分析

    这篇文章主要介绍了java乐观锁原理与实现,结合具体案例形式分析了乐观锁的原理及java使用乐观锁实现自动派单功能的相关操作技巧,需要的朋友可以参考下
    2019-10-10
  • Java排序算法总结之希尔排序

    Java排序算法总结之希尔排序

    这篇文章主要介绍了Java排序算法总结之希尔排序,较为详细的分析了希尔排序的原理与java的实现技巧,需要的朋友可以参考下
    2015-05-05
  • Java Collection集合遍历运行代码实例

    Java Collection集合遍历运行代码实例

    这篇文章主要介绍了Java Collection集合遍历运行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • java 多线程与并发之volatile详解分析

    java 多线程与并发之volatile详解分析

    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机
    2021-11-11
  • java中文乱码之解决URL中文乱码问题的方法

    java中文乱码之解决URL中文乱码问题的方法

    这篇文章主要为大家分享了介绍了java中文乱码之解决URL中文乱码问题的方法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 友盟 微信第三方登录示例

    友盟 微信第三方登录示例

    这篇文章主要介绍了友盟 微信第三方登录示例的相关资料,需要的朋友可以参考下
    2016-10-10
  • Java 数据结构线性表之顺序存储详解原理

    Java 数据结构线性表之顺序存储详解原理

    线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系
    2021-10-10
  • Java常见基本数据结构概览

    Java常见基本数据结构概览

    这篇文章主要介绍了Java常见的几种基本数据结构,包括其含义和用法,,需要的朋友可以参考下
    2017-09-09
  • Spring OAuth2.0 单元测试解决方案

    Spring OAuth2.0 单元测试解决方案

    这篇文章主要介绍了Spring OAuth2.0 单元测试解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 简单工厂模式_动力节点Java学院整理

    简单工厂模式_动力节点Java学院整理

    这篇文章主要介绍了简单工厂模式的相关资料,和大家一起学习静态工厂方法模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论