Java中mkdir()和mkdirs()的區(qū)別及說明
mkdir()和mkdirs()的區(qū)別
boolean mkdir() : 創(chuàng)建此抽象路徑名指定的目錄。
boolean mkdirs() : 創(chuàng)建此抽象路徑名指定的目錄,包括創(chuàng)建不存在的父目錄。
mkdir:只能用來創(chuàng)建文件夾,且只能創(chuàng)建一級目錄,如果上級不存在,就會創(chuàng)建失敗。
mkdirs:只能用來創(chuàng)建文件夾,且能創(chuàng)建多級目錄 ,如果上級不存在,就會自動創(chuàng)建。(創(chuàng)建文件夾多用此)
Java的mkdir()與mkdirs()引發(fā)的悲劇---java的mkdir()方法無法創(chuàng)建文件目錄
昨晚深夜在做項目的文件上傳,在上傳之前要先判斷指定的文件目錄是否存在,如果不存在就先創(chuàng)建改目錄。
因為之前已經(jīng)做過類似的功能了,所以就把判斷文件目錄以及創(chuàng)建的代碼直接copy過來了,然而很郁悶的是,一模一樣的代碼,這回卻遇到一個特別奇葩的問題:

我要判斷的文件目錄
ServletContext context = ServletActionContext.getServletContext();
// 獲得當前web應(yīng)用所在目錄下file文件夾的絕對路徑
String path = context.getRealPath("/CloudSpaceFile/CustomerFile/"
+ customerName + "/" + typesName + "/");
File f = new File(path);// 判斷文件夾是否存在,如果不存在就創(chuàng)建
if (!f.exists()) {
f.mkdir();
System.out.println("editCustApplicaAction.add()文件夾不存在------------"+f);
}
boolean t = f.exists();
if (t == true) {
System.out.println("真的//");
}else {
System.out.println("假的的//");
}我之前做的目錄判斷、創(chuàng)建等功能的代碼
ServletContext context = ServletActionContext.getServletContext();
// 獲得當前web應(yīng)用所在目錄下file文件夾的絕對路徑
String path = context
.getRealPath("/CloudSpaceFile/ResourceFile/SystemApplication/"
+ typesName + "/");
//System.out.println("editCustApplicaAction.add()+++++++++++++++++++"+path);
File f = new File(path);// 判斷文件夾是否存在,如果不存在就創(chuàng)建
if (!f.exists()) {
f.mkdir();
}因為是凌晨了,宿舍斷網(wǎng)了,所以不能查找想要的知識,只能自己琢磨出現(xiàn)這種問題的原因,結(jié)果搞了大半天也沒弄清楚原因。
現(xiàn)在查找了資料才知道問題所在:
其中第二次的customerName以及typesName是用戶的用戶名以及他所選擇的文件名,其中 customerName 這個文件目錄之上的目錄已經(jīng)存在的,也就是說,我現(xiàn)在要判斷“****/CloudSpaceFile/CustomerFile/” 這個目錄下的 customerName 這個文件夾是否存在,以及customerName這個文件夾下面的typesName這個文件夾也是否存在(也就是說,這里有可能要創(chuàng)建多層目錄)。
而第一次的的“****/CloudSpaceFile/CustomerFile/”目錄已經(jīng)存在了,要判斷的是“typesName”這個目錄是否存在,也就是說這里只要創(chuàng)建一層目錄。
問題就出在這里?。。。?/strong>
我用創(chuàng)建單層目錄的mkdir()方法去創(chuàng)建多層目錄?。。?/p>
知道問題所在以后就容易解決了:
只要把調(diào)用的方法mkdir()改為mkdirs()就行了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 數(shù)據(jù)結(jié)構(gòu)線性表之順序存儲詳解原理
線性表的順序存儲是指用一組地址連續(xù)的存儲單元依次存儲線性表中的各個元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲在相鄰的物理存儲單元中,即通過數(shù)據(jù)元素物理存儲的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系2021-10-10
Java常見基本數(shù)據(jù)結(jié)構(gòu)概覽
這篇文章主要介紹了Java常見的幾種基本數(shù)據(jù)結(jié)構(gòu),包括其含義和用法,,需要的朋友可以參考下2017-09-09

