首页 > 其他分享 >mkdir()和mkdirs()的区别

mkdir()和mkdirs()的区别

时间:2022-08-24 12:24:15浏览次数:70  
标签:tmp 区别 mkdir two mkdirs three 目录

mkdir()和mkdirs()的区别

本文内容主要整理自Stack Overflow的问题:Difference between mkdir() and mkdirs() in java for java.io.File [closed]

问题起源

最近在实习工作中,将项目部署到新环境的服务器中时,遇到了mkdir()失败的问题。原因是在项目中配置的路径信息在新服务器上不存在,而且该路径是多层目录结构,mkdir()在多层目录不存在的情况下会执行失败。但是如果手动去多个环境中挨个创建目录,工作实在是太繁琐。所以查资料寻找解决方案,这里发现了mkdirs()方法,顺利解决问题。看到stack overflow上对该问题的解释很XX,特此记录。

本篇文章重点不在技术难度,主要是做笔记记录,方便自己查阅和回顾。

问题描述

java.io.FIle中file.mkDir()file.mkDirs()的区别。

详解

对于mkdirs(),它会同时创建该文件所在路径的所有缺失的父目录;而mkdir()只会创建该文件所在路径的最底层的目录,也就是该文件所在目录。当mkdir()无法找到即将创建的目录的上一层目录时,就会执行失败,返回false。

两个函数的返回值都是boolean类型。

举例来说,我需要在目录/tmp下创建新目录。首先我们有:

File f = new File("/tmp/one/two/three");
  • 1

当我们调用函数mkdirs()

f.mkdirs();
  • 1

执行效果是同时创建了三层目录one、two、three,具体为:

  • /tmp/one
  • /tmp/one/two
  • /tmp/one/two/three

对于mkdir()

f.mkdir();
  • 1

/tmp/one/two目录已经存在时,则执行成功,创建出目录:/tmp/one/two/three。而如果目录/tmp/one/two/three不存在,那么则会返回false。

延伸

官方文档

信息的源头还是官方文档和源码,可以继续看英文文档加深理解。

linux命令对比

这个命令可以类比Linux命令的mkdir。即,mkdir()函数效果类似于mkdir,而mkdirs()则类似于mkdir -p

mkdir -p /tmp/one/two/three
  • 1

更详细的命令使用方式可以man进行查看。

https://blog.csdn.net/surp2011/article/details/77415945

标签:tmp,区别,mkdir,two,mkdirs,three,目录
From: https://www.cnblogs.com/sunny3158/p/16619421.html

相关文章

  • postmapping和RequestMapping的区别
    postmapping和RequestMapping的区别@GetMapping用于将HTTPGET请求映射到特定处理程序方法的注释。具体来说,@GetMapping是一个作为快捷方式的组合注释@RequestMapping(......
  • 解释(Interpret)和编译(Compile)的区别
    计算机语言可以分为机器语言、汇编语言和高级语言高级语言会翻译成机器语言之后,才可以执行。而翻译的方式有两种,一种是解释(Interpret),一种是编译(Compile)。运行过程编译(Co......
  • 成员变量和局部变量的区别和面向对象的三大特征之封装性
    成员变量和局部变量的区别1、定义的位置不一样【重点】局部变量:在方法的内部成员变量:在方法的外部,直接鞋子类当中2、作用范围不一样【重点】局部变量:只有方法当中才可......
  • 关于CATALINA_HOME 和 CATALINA_BASE 的区别
    官方文档*以下内容从官方复制出来的*目录和文件这些是一些重要的tomcat目录:/bin-(启动,关闭和其他脚本)/conf-配置文件和相关DTD,这里最重要的文件是server.xml,它......
  • 内存管理——分段和分页的区别
    分段与分页的区别分段:分页:分段和分页的工作方式相似,都是非连续存储。分段的逻辑地址=段号+段内偏移。段表存放段描述符。段描述符=段基址+段界限。物理地址=段基址+......
  • MySQL 5.7 vs 8.0版本的性能有什么区别
    1、新增持久化设置MySQL8.0新增SETPERSIST的命令,该命令的配置值保存到数据目录下的mysqld-auto.cnf文件中,待重启后,读取该文件,用其中的配置覆盖缺省的配置文件,补充了SE......
  • Python 中 Iterator和Iterable的区别
    Python中list,truple,str,dict这些都可以被迭代,但他们并不是迭代器。为什么?因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的,也就是说有多少......
  • MySQL中datetime与timestamp的区别
    在MySQL常用的场景中,会使用datetime和timestamp两种方式记录数据的时间,一般会精确到秒,主要用于记录每个表中数据的创建时间、修改时间等,甚至在设计表时,根据设计规范,会对每......
  • CATIA——Catia包络体与凸台(实体)之间的区别是什么?
      参考:https://www.zhihu.com/question/354508653/answer/2165973396 ......
  • isNaN 与 Number.isNaN 区别
    isNaN()是判断是不是NaN本意是利用Number()方法,尝试将参数转换为Number类型,如果成功返回false,如果失败返回true; Number.isNaN()从外面往......