ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mkdir()和mkdirs()的区别

2022-08-24 12:32:24  阅读:228  来源: 互联网

标签: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,目录
来源: https://www.cnblogs.com/sunny3158/p/16619421.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有