• mkdir()和mkdirs()的区别


    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
  • 相关阅读:
    基于数据库的号段模式生成分布式ID
    【idea】实现接口方法的快捷键
    java下载文件代码示例
    使用easyexcel生成文件,下载文件示例
    【easyexcel】读取excel文件
    【easyexcel】生成excel文件
    JAXB常用注解详解
    【SoapUI】测试webservice接口步骤
    idea 默认全局配置maven,避免每次新建项目都需要指定自己的maven目录
    JAVA实现MD5加密
  • 原文地址:https://www.cnblogs.com/sunny3158/p/16619421.html
Copyright © 2020-2023  润新知