關(guān)于list和listFiles的區(qū)別
還是沒(méi)有搞明白這兩個(gè)方法的區(qū)別。
他們都可以顯示當(dāng)前目錄下的所有文件和目錄,
為什么遞歸之后,list仍然顯示當(dāng)前,沒(méi)有遞歸下去。而listFiles卻顯示出來(lái)了?
還是沒(méi)有搞明白這兩個(gè)方法的區(qū)別。
他們都可以顯示當(dāng)前目錄下的所有文件和目錄,
為什么遞歸之后,list仍然顯示當(dāng)前,沒(méi)有遞歸下去。而listFiles卻顯示出來(lái)了?
2016-07-17
舉報(bào)
2016-09-29
詳解list 和listFlile:
首先調(diào)用list()方法的話,返回的是一個(gè)String類型的字符串?dāng)?shù)組,它返回的是dir目錄下一級(jí)的所有文件的目錄,但它是以字符串的形式存在,然而java并不會(huì)識(shí)別該字符串類型的目錄,因?yàn)閖ava不確定該string是否是一個(gè)文件目錄,或者還是只是一個(gè)數(shù)字或者其他類型的對(duì)象,只能簡(jiǎn)單的將它顯示出來(lái)
然后調(diào)用listFile()方法的話,返回的是一個(gè)文件類型的文件數(shù)組,返回的也是dir目錄下一級(jí)的所有文件的目錄,但與string類型不同的是,java可以自動(dòng)識(shí)別文件類型的對(duì)象,知道返回的是一個(gè)File類型的對(duì)象,所以可以調(diào)用相應(yīng)的方法進(jìn)行遞歸遍歷,而String 類型可能是因?yàn)橄到y(tǒng)沒(méi)有配備相應(yīng)的方法,所以不能做判斷是否是目錄,并且進(jìn)行遞歸遍歷的操作
2016-09-29
首先調(diào)用list()方法的話,返回的是一個(gè)String類型的字符串?dāng)?shù)組,它返回的是dir目錄下一級(jí)的所有文件的目錄,但它是以字符串的形式存在,然而java并不會(huì)識(shí)別該字符串類型的目錄,只能簡(jiǎn)單的將它顯示出來(lái)
然后調(diào)用listFile()方法的話,返回的是一個(gè)文件類型的文件數(shù)組,返回的也是dir目錄下一級(jí)的所有文件的目錄,但與string類型不同的是,java可以自動(dòng)識(shí)別文件類型的對(duì)象,知道返回的是一個(gè)File類型的對(duì)象,所以可以調(diào)用相應(yīng)的方法進(jìn)行遞歸遍歷,而String 類型可能是因?yàn)橄到y(tǒng)沒(méi)有配備相應(yīng)的方法,所以不能做判斷是否是目錄,并且進(jìn)行遞歸遍歷的操作
2016-07-17
對(duì)的,就是針對(duì)這個(gè)問(wèn)題,我利用將返回的String數(shù)組分別創(chuàng)建File對(duì)象,然后就可以遞歸調(diào)用了。。但不知道是不是因?yàn)閮蓚€(gè)方法的區(qū)別,導(dǎo)致沒(méi)有到達(dá)遞歸的效果。
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 + "是個(gè)目錄");
// }else{
// //System.out.println(dir + "\\" + temp);
// }
// }
2016-07-17
嘗試做出解答:
首先,list返回的的是String類型的值,僅僅只是當(dāng)前目錄下的所有文件和目錄的名稱(假設(shè)其中有個(gè)xx.txt,返回的只是“xx”,前面沒(méi)有“e://a//b”這樣),要分清,這是個(gè)字符串String
listFiles返回的是File的對(duì)象(類似于你這樣創(chuàng)建的:File file = new File(“E:\\a”);),這個(gè)是File類型
最后,要用遞歸的話,public static void listDirectory (File dir) throws IOException {...},這個(gè)函數(shù)的參數(shù)是File類型的,所以想要進(jìn)行遞歸就得正確地傳入?yún)?shù),如果你傳入了String類型,自然沒(méi)有函數(shù)里的屬于File類型的方法,所以無(wú)法遞歸。