本文是Java IO总结系列篇的第3篇,前篇的访问地址如下:

本文为大家介绍Java IO-创建文件夹的四种方法,及其优缺点的解析。如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力。

1.传统API创建文件夹方式

Java传统的IO API种使用java.io.File类中的file.mkdir()file.mkdirs()方法创建文件夹

  • file.mkdir()创建文件夹成功返回true,失败返回false。如果被创建文件夹的父文件夹不存在也返回false.没有异常抛出。
  • file.mkdirs()创建文件夹连同该文件夹的父文件夹,如果创建成功返回true,创建失败返回false。创建失败同样没有异常抛出。
@Test
void testCreateDir1() {
//“D:\data111”目录现在不存在
String dirStr = "D:\\data111\\test";
File directory = new File(dirStr); //mkdir
boolean hasSucceeded = directory.mkdir();
System.out.println("创建文件夹结果(不含父文件夹):" + hasSucceeded); //mkdirs
hasSucceeded = directory.mkdirs();
System.out.println("创建文件夹结果(包含父文件夹):" + hasSucceeded); }

输出结果如下:使用mkdir创建失败,使用mkdirs创建成功。

创建文件夹结果(不含父文件夹):false
创建文件夹结果(包含父文件夹):true

大家可以看到,mkdir和mkdirs虽然可以创建文件,但是它们在异常处理的环节做的非常不友好。创建失败之后统一返回false,创建失败的原因没有说明。是父文件夹不存在所以创建失败?还是文件夹已经存在所以创建失败?还是因为磁盘IO原因导致创建文件夹失败?

2. Java NIO创建文件夹

为了解决传统IO创建文件夹中异常失败处理问题不明确的问题,在Java的NIO中进行了改进。

2.1. Files.createDirectory创建文件夹

  • 如果被创建文件夹的父文件夹不存在,则抛出NoSuchFileException.
  • 如果被创建的文件夹已经存在,则抛出FileAlreadyExistsException.
  • 如果因为磁盘IO出现异常,则抛出IOException.
Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectory(path);

2.2.Files.createDirectories创建文件夹及其父文件夹

  • 如果被创建文件夹的父文件夹不存在,就创建它
  • 如果被创建的文件夹已经存在,就是用已经存在的文件夹,不会重复创建,没有异常抛出
  • 如果因为磁盘IO出现异常,则抛出IOException.
Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectorys(path);

另外大家要注意:NIO的API创建的文件夹返回值是Path,这样方便我们在创建完成文件夹之后继续向文件夹里面写入文件数据等操作。比传统IO只返回一个boolean值要好得多。

欢迎关注我的博客,里面有很多精品合集

  • 本文转载注明出处(必须带连接,不能只转文字):字母哥博客

觉得对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇的更多相关文章

  1. Java遍历文件夹的两种方法(非递归和递归)

    import java.io.File; import java.util.LinkedList; public class FileSystem {    public static int num ...

  2. 总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇

    本文是Java IO总结系列篇的第4篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  3. Java创建文件夹

    import java.io.File; public class Mkdirs { public static void main(String[] args) { /** *创建文件夹,如果路径不 ...

  4. Java创建文件夹、创建文件、上传文件,下载文件

    1.创建文件夹 /** * 判断文件夹是否存在 * @param myPath */ public static void judeDirExists(File myPath) { if (!myPa ...

  5. Java 创建文件夹和文件,字符串写入文件,读取文件

    两个函数如下: TextToFile(..)函数:将字符串写入给定文本文件: createDir(..)函数:创建一个文件夹,有判别是否存在的功能. public void TextToFile(fi ...

  6. java创建文件夹以及文件

    java在创建文件的过程中如果改文件的路径不存在: 会出现下面这种情况 java.io.IOException: 系统找不到指定的路径. at java.io.WinNTFileSystem.crea ...

  7. Java 创建文件夹和文件

    String path="D://my"; File folder=new File(path); if(!folder.exists() && !folder.i ...

  8. Java实现文件拷贝的4种方法.

    原文地址:http://blog.csdn.net/ta8210/article/details/2073817 使用 java 进行文件拷贝 相信很多人都会用,,不过效率上是否最好呢? 最近看了看N ...

  9. Java获取文件Content-Type的四种方法

    HTTP Content-Type在线工具 有时候我们需要获取本地文件的Content-Type,已知 Jdk 自带了三种方式来获取文件类型. 另外还有第三方包 Magic 也提供了API.Magic ...

随机推荐

  1. C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!

    前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来 ...

  2. UOJ #310 黎明前的巧克力 FWT dp

    LINK:黎明前的巧克力 我发现 很多难的FWT的题 都和方程有关. 上次那个西行寺无余涅槃 也是各种解方程...(不过这个题至今还未理解. 考虑dp 容易想到f[i][j][k]表示 第一个人得到巧 ...

  3. Newbe.Claptrap 框架如何实现多级生命周期控制?

    Newbe.Claptrap 框架如何实现多级生命周期控制?最近整理了一下项目的术语表.今天就谈谈什么是 Claptrap Lifetime Scope. 特别感谢 kotone 为本文提供的校对建议 ...

  4. 云小课 | IPv4枯了,IPv6来了

    摘要:本篇主要分享IPv4与IPv6的区别和IPv6的应用场景,助您快速理解华为云IPv6双栈及IPv6 EIP. IPv6的由来 上节课我们讲了公网IP与私网IP,了解了IP地址的一些知识. 我们一 ...

  5. JSON 和 POJO 互转,List<T> 和 JSON 互转

    JSON 和 POJO import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.Logger ...

  6. 集合:List接口的实现类(ArrayList、LinkedList、Vector)

    1.List接口 (1)特点 有序(插入和取出的顺序相等,因为有一个整数索引记录了元素的插入的位置) 允许有重复的元素(调用equals方法返回true,允许有多个null) @Test public ...

  7. python 正则表达式与JSON-正则表达式匹配数字、非数字、字符、非字符、贪婪模式、非贪婪模式、匹配次数指定等

    1.正则表达式:目的是为了爬虫,是爬虫利器. 正则表达式是用来做字符串匹配的,比如检测是不是电话.是不是email.是不是ip地址之类的 2.JSON:外部数据交流的主流格式. 3.正则表达式的使用 ...

  8. 网络协议: TCP/IP 和UDP/IP

    网络协议: TCP/IP 和UDP/IP TCP/IP TCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议. ...

  9. Weblogic 连接 RMI 服务报错 Connection refused

    WebLogic 连接 RMI 服务报错 Connection refused 访问 WebLogic RMI 服务报错,连接被拒绝,连接超时. 奇怪的是,报错的 host 根本不是我要访问的. 报错 ...

  10. NMS系列

    NMS soft NMS softer NMS https://www.cnblogs.com/VincentLee/p/12579756.html