亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于list和listFiles的區別

還是沒有搞明白這兩個方法的區別。

他們都可以顯示當前目錄下的所有文件和目錄,

為什么遞歸之后,list仍然顯示當前,沒有遞歸下去。而listFiles卻顯示出來了?

正在回答

4 回答

詳解list 和listFlile:

首先調用list()方法的話,返回的是一個String類型的字符串數組,它返回的是dir目錄下一級的所有文件的目錄,但它是以字符串的形式存在,然而java并不會識別該字符串類型的目錄,因為java不確定該string是否是一個文件目錄,或者還是只是一個數字或者其他類型的對象,只能簡單的將它顯示出來

然后調用listFile()方法的話,返回的是一個文件類型的文件數組,返回的也是dir目錄下一級的所有文件的目錄,但與string類型不同的是,java可以自動識別文件類型的對象,知道返回的是一個File類型的對象,所以可以調用相應的方法進行遞歸遍歷,而String 類型可能是因為系統沒有配備相應的方法,所以不能做判斷是否是目錄,并且進行遞歸遍歷的操作


0 回復 有任何疑惑可以回復我~

首先調用list()方法的話,返回的是一個String類型的字符串數組,它返回的是dir目錄下一級的所有文件的目錄,但它是以字符串的形式存在,然而java并不會識別該字符串類型的目錄,只能簡單的將它顯示出來

然后調用listFile()方法的話,返回的是一個文件類型的文件數組,返回的也是dir目錄下一級的所有文件的目錄,但與string類型不同的是,java可以自動識別文件類型的對象,知道返回的是一個File類型的對象,所以可以調用相應的方法進行遞歸遍歷,而String 類型可能是因為系統沒有配備相應的方法,所以不能做判斷是否是目錄,并且進行遞歸遍歷的操作

0 回復 有任何疑惑可以回復我~

對的,就是針對這個問題,我利用將返回的String數組分別創建File對象,然后就可以遞歸調用了。。但不知道是不是因為兩個方法的區別,導致沒有到達遞歸的效果。

String[] file = dir.list();

// for(String temp : file){

// File tempFile = new File(temp);

// System.out.println(dir + "\\" + tempFile);

// System.out.println(tempFile.isDirectory());

// if(tempFile.isDirectory()){

// listDirectory(tempFile);

// System.out.println(dir + "\\" + tempFile);

// System.out.println(dir + "是個目錄");

// }else{

// //System.out.println(dir + "\\" + temp);

// }

// }


0 回復 有任何疑惑可以回復我~

嘗試做出解答:

首先,list返回的的是String類型的值,僅僅只是當前目錄下的所有文件和目錄的名稱(假設其中有個xx.txt,返回的只是“xx”,前面沒有“e://a//b”這樣),要分清,這是個字符串String

listFiles返回的是File的對象(類似于你這樣創建的:File file = new File(“E:\\a”);),這個是File類型

最后,要用遞歸的話,public static void listDirectory (File dir) throws IOException {...},這個函數的參數是File類型的,所以想要進行遞歸就得正確地傳入參數,如果你傳入了String類型,自然沒有函數里的屬于File類型的方法,所以無法遞歸。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于list和listFiles的區別

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號