總結(jié)java創(chuàng)建文件夾的4種方法及其優(yōu)缺點(diǎn)-JAVA IO基礎(chǔ)總結(jié)第三篇

本文是Java IO總結(jié)系列篇的第3篇,前篇的訪問地址如下:

本文為大家介紹Java IO-創(chuàng)建文件夾的四種方法,及其優(yōu)缺點(diǎn)的解析。如果您閱讀完成,覺得此文對您有幫助,請給我點(diǎn)個贊,您的支持是我不竭的創(chuàng)作動力。

1.傳統(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)建文件夾失???

2. Java NIO創(chuàng)建文件夾

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

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)存在的文件夾,不會重復(fù)創(chuàng)建,沒有異常拋出
  • 如果因為磁盤IO出現(xiàn)異常,則拋出IOException.
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值要好得多。

歡迎關(guān)注我的博客,里面有很多精品合集

  • 本文轉(zhuǎn)載注明出處(必須帶連接,不能只轉(zhuǎn)文字):字母哥博客。

覺得對您有幫助的話,幫我點(diǎn)贊、分享!您的支持是我不竭的創(chuàng)作動力! 。另外,筆者最近一段時間輸出了如下的精品內(nèi)容,期待您的關(guān)注。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容