詳細總結Java創建文件夾的方法及優缺點
一、傳統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原因導致創建文件夾失敗?
二、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.
所以,可以使用Files.createDirectories的地方不使用Files.createDirectory,盡量更少的遇到異常。
Path path = Paths.get("D:\\data222\\test"); Path pathCreate = Files.createDirectorys(path);
另外大傢要註意:NIO的API創建的文件夾返回值是Path,這樣方便我們在創建完成文件夾之後繼續向文件夾裡面寫入文件數據等操作。比傳統IO隻返回一個boolean值要好得多。
三、小結
Java語言中,創建指定目錄包含四種方法,涉及兩個不同類 java.io.File類 和 java.nio.file.Files
file.mkdir()創建文件夾成功返回true,失敗返回false。如果被創建文件夾的父文件夾不存在也返回false.沒有異常拋出。
file.mkdirs()創建文件夾連同該文件夾的父文件夾,如果創建成功返回true,創建失敗返回false。創建失敗同樣沒有異常拋出。
Files.createDirectory創建文件夾
如果被創建文件夾的父文件夾不存在,則拋出NoSuchFileException.
如果被創建的文件夾已經存在,則拋出FileAlreadyExistsException.
如果因為磁盤IO出現異常,則拋出IOException.
Files.createDirectories創建文件夾及其父文件夾
如果被創建文件夾的父文件夾不存在,就創建它;
如果被創建的文件夾已經存在,就是用已經存在的文件夾,不會重復創建,沒有異常拋出;
如果因為磁盤IO出現異常,則拋出IOException.
四種方式中,最優方式使用 Files.createDirectories 創建文件夾。
到此這篇關於詳細總結Java創建文件夾的方法及優缺點的文章就介紹到這瞭,更多相關Java創建文件夾內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!