1. 程式人生 > >【Java】利用自帶的file.mkdirs()建立資料夾與file.mkdirs()的注意事項

【Java】利用自帶的file.mkdirs()建立資料夾與file.mkdirs()的注意事項

利用Java的自帶命令file.mkdirs();是可以直接在系統建立資料夾的。

比如在d:\1資料夾下建立一個2的資料夾,則這樣寫:

  1. import java.io.*;  
  2. publicclass FileMkdirTest {  
  3.     publicstaticvoid main(String[] args) {  
  4.         File file = new File("d:\\1\\2");  
  5.         //如果d:\1\2這個資料夾不存在,才建立
  6.         if (!file.exists()) {  
  7.             file.mkdirs();  
  8.         }  
  9.     }  
  10. }  

Java把資料夾也視作一個file,

但值得注意的是,在資料夾或檔名中不得含有:兩個方向的斜槓\/、冒號:、星號*、問號?、引號"、左右尖括號<>、豎槓|,你要使用這個符號作為資料夾或檔名稱,最好把他們轉化成全形\/:*?"<>|,可以利用到如下的JAVA函式轉化:

  1. publicstatic String fileEncode(String str) {  
  2.     if (str != null) {  
  3.         //這裡是專為檔案寫的轉義方法,涉及檔案操作
  4.         return str  
  5.                 .replaceAll("\\\\", "\")  
  6.                 .replaceAll("/""/")  
  7.                 .replaceAll(":"":")  
  8.                 .replaceAll("[*]""*")  
  9.                 .replaceAll("[?]""?")  
  10.                 .replaceAll("\"""”")  
  11.                 .replaceAll(":"":")  
  12.                 .replaceAll("<""<")  
  13.                 .replaceAll(">"
    ">")  
  14.                 .replaceAll("[|]""|");                  
  15.     } else {  
  16.         //防止空,搞成空格
  17.         return" ";  
  18.     }  
  19. }  
如果你在新建的資料夾中,中含有\/:*?"<>|,file.mkdirs();只會返回false,不會丟擲任何異常,然後不建立資料夾,因此這個錯誤相當隱蔽。

比如如下的程式:

  1. publicclass FileMkdirTest {  
  2.     publicstaticvoid main(String[] args) {  
  3.         File file = new File("d:\\1\\|");  
  4.         if (!file.exists()) {  
  5.             file.mkdirs();  
  6.         }  
  7.     }  
  8. }  
在d:\1中的|資料夾建立失敗,但Java控制檯不返回任何資訊,具體執行結果如下圖: