欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳細總結(jié)Java創(chuàng)建文件夾的方法及優(yōu)缺點

 更新時間:2021年05月26日 17:28:52   作者:Java架構(gòu)師(公眾號:毛奇志)  
很多小伙伴都不知道如何用Java創(chuàng)建文件夾,今天給大家整理了這篇文章,文中有非常詳細的方法介紹及方法的優(yōu)缺點,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下

一、傳統(tǒng)API創(chuàng)建文件夾方式

Java傳統(tǒng)的IO API種使用java.io.File類中的file.mkdir()和file.mkdirs()方法創(chuàng)建文件夾

file.mkdir()創(chuàng)建文件夾成功返回true,失敗返回false。如果被創(chuàng)建文件夾的父文件夾不存在也返回false.沒有異常拋出。
file.mkdirs()創(chuàng)建文件夾連同該文件夾的父文件夾,如果創(chuàng)建成功返回true,創(chuàng)建失敗返回false。創(chuàng)建失敗同樣沒有異常拋出。

@Test
void testCreateDir1() {
   //“D:\data111”目錄現(xiàn)在不存在
   String dirStr = "D:\\data111\\test";
   File directory = new File(dirStr);

   //mkdir
   boolean hasSucceeded = directory.mkdir();
   System.out.println("創(chuàng)建文件夾結(jié)果(不含父文件夾):" + hasSucceeded);

   //mkdirs
   hasSucceeded = directory.mkdirs();
   System.out.println("創(chuàng)建文件夾結(jié)果(包含父文件夾):" + hasSucceeded);

}

輸出結(jié)果如下:使用mkdir創(chuàng)建失敗,使用mkdirs創(chuàng)建成功。

創(chuàng)建文件夾結(jié)果(不含父文件夾):false
創(chuàng)建文件夾結(jié)果(包含父文件夾):true

大家可以看到,mkdir和mkdirs雖然可以創(chuàng)建文件,但是它們在異常處理的環(huán)節(jié)做的非常不友好。創(chuàng)建失敗之后統(tǒng)一返回false,創(chuàng)建失敗的原因沒有說明。是父文件夾不存在所以創(chuàng)建失?。窟€是文件夾已經(jīng)存在所以創(chuàng)建失???還是因為磁盤IO原因?qū)е聞?chuàng)建文件夾失敗?

二、Java NIO創(chuàng)建文件夾

為了解決傳統(tǒng)IO創(chuàng)建文件夾中異常失敗處理問題不明確的問題,在Java的NIO中進行了改進。

2.1. Files.createDirectory創(chuàng)建文件夾

如果被創(chuàng)建文件夾的父文件夾不存在,則拋出NoSuchFileException.
如果被創(chuàng)建的文件夾已經(jīng)存在,則拋出FileAlreadyExistsException.
如果因為磁盤IO出現(xiàn)異常,則拋出IOException.

Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectory(path);

2.2.Files.createDirectories創(chuàng)建文件夾及其父文件夾

如果被創(chuàng)建文件夾的父文件夾不存在,就創(chuàng)建它;
如果被創(chuàng)建的文件夾已經(jīng)存在,就是用已經(jīng)存在的文件夾,不會重復創(chuàng)建,沒有異常拋出;
如果因為磁盤IO出現(xiàn)異常,則拋出IOException.

所以,可以使用Files.createDirectories的地方不使用Files.createDirectory,盡量更少的遇到異常。

Path path = Paths.get("D:\\data222\\test");
Path pathCreate = Files.createDirectorys(path);

另外大家要注意:NIO的API創(chuàng)建的文件夾返回值是Path,這樣方便我們在創(chuàng)建完成文件夾之后繼續(xù)向文件夾里面寫入文件數(shù)據(jù)等操作。比傳統(tǒng)IO只返回一個boolean值要好得多。

三、小結(jié)

Java語言中,創(chuàng)建指定目錄包含四種方法,涉及兩個不同類 java.io.File類 和 java.nio.file.Files

file.mkdir()創(chuàng)建文件夾成功返回true,失敗返回false。如果被創(chuàng)建文件夾的父文件夾不存在也返回false.沒有異常拋出。

file.mkdirs()創(chuàng)建文件夾連同該文件夾的父文件夾,如果創(chuàng)建成功返回true,創(chuàng)建失敗返回false。創(chuàng)建失敗同樣沒有異常拋出。

Files.createDirectory創(chuàng)建文件夾
如果被創(chuàng)建文件夾的父文件夾不存在,則拋出NoSuchFileException.
如果被創(chuàng)建的文件夾已經(jīng)存在,則拋出FileAlreadyExistsException.
如果因為磁盤IO出現(xiàn)異常,則拋出IOException.

Files.createDirectories創(chuàng)建文件夾及其父文件夾
如果被創(chuàng)建文件夾的父文件夾不存在,就創(chuàng)建它;
如果被創(chuàng)建的文件夾已經(jīng)存在,就是用已經(jīng)存在的文件夾,不會重復創(chuàng)建,沒有異常拋出;
如果因為磁盤IO出現(xiàn)異常,則拋出IOException.

四種方式中,最優(yōu)方式使用 Files.createDirectories 創(chuàng)建文件夾。

到此這篇關于詳細總結(jié)Java創(chuàng)建文件夾的方法及優(yōu)缺點的文章就介紹到這了,更多相關Java創(chuàng)建文件夾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • java Random.nextInt()方法的具體使用

    java Random.nextInt()方法的具體使用

    這篇文章主要介紹了java Random.nextInt()方法的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java之類加載機制案例講解

    Java之類加載機制案例講解

    這篇文章主要介紹了Java之類加載機制案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 深入淺析Mybatis的缺陷問題

    深入淺析Mybatis的缺陷問題

    Mybatis是業(yè)界非常流行的持久層框架,輕量級、易用,在金融IT領域完全是領軍地位,比Hibernate更受歡迎,優(yōu)勢非常多,也是非常值得我們學習的。這篇文章主要介紹了Mybatis的缺陷問題的相關資料,需要的朋友可以參考下
    2016-10-10
  • 在VSCode里使用Jupyter?Notebook調(diào)試Java代碼的詳細過程

    在VSCode里使用Jupyter?Notebook調(diào)試Java代碼的詳細過程

    Jupyter Notebook是以網(wǎng)頁的形式打開,可以在網(wǎng)頁頁面中直接編寫代碼和運行代碼,代碼的運行結(jié)果也會直接在代碼塊下顯示的程序,這篇文章主要介紹了在VSCode里使用Jupyter?Notebook,調(diào)試Java代碼,需要的朋友可以參考下
    2022-07-07
  • Java8 將一個List<T>轉(zhuǎn)為Map<String,T>的操作

    Java8 將一個List<T>轉(zhuǎn)為Map<String,T>的操作

    這篇文章主要介紹了Java8 將一個List<T>轉(zhuǎn)為Map<String, T>的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

    SpringBoot項目使用mybatis-plus逆向自動生成全套代碼

    在JavaWeb工程中,每一個SSM新項目或者說是SpringBoot項目也好,都少不了model、controller、service、dao等層次的構(gòu)建。使用mybatis-plus逆向可以自動生成,感興趣的可以了解一下
    2021-09-09
  • Java+EasyExcel實現(xiàn)文件上傳功能

    Java+EasyExcel實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了如何通過Java和EasyExcel實現(xiàn)文件上傳功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-02-02
  • Java中零拷貝和深拷貝的原理及實現(xiàn)探究(代碼示例)

    Java中零拷貝和深拷貝的原理及實現(xiàn)探究(代碼示例)

    深拷貝和零拷貝是兩個在 Java 中廣泛使用的概念,它們分別用于對象復制和數(shù)據(jù)傳輸優(yōu)化,下面將詳細介紹這兩個概念的原理,并給出相應的 Java 代碼示例,感興趣的朋友一起看看吧
    2023-12-12
  • 解決使用ProcessBuilder踩到的坑及注意事項

    解決使用ProcessBuilder踩到的坑及注意事項

    這篇文章主要介紹了解決使用ProcessBuilder踩到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • idea插件開發(fā)之彈出框的示例代碼

    idea插件開發(fā)之彈出框的示例代碼

    這篇文章主要介紹了idea插件開發(fā)之彈出框的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論