有人問及一個用java列舉某個文件夾下所有的文件或者目錄編程題。結果他不加思索的寫了十幾行代碼,就搞定了,結果面試官說等通知,直到最后都沒通知他,我猜想出題人的最終想法是看如何封裝代碼,如何靈活使用豐富的API。
專注于為中小企業提供網站建設、網站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業清水河免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了1000+企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。
于是我試著寫一個可選擇結果,希望對各位有用:
import java.io.File;
import java.io.FileFilter;
/**
@author leizhimin 2010-3-22 20:58:37
*/
public class FileTest {
public static final byte TYPE_ALL = 0; //所有的文件和文件夾
public static final byte TYPE_FILE = 1; //文件
public static final byte TYPE_DIR = 2; //文件夾
public static void main(String args[]) {
File[] flist = listFile("C:\\", FileTest.TYPE_FILE);
for (File file : flist) {
System.out.println(file.getPath());
}
}
/**
* 列舉文件或者目錄
*
* @param path 操作目錄
* @param type 列舉的類型
* @return 所列舉的文件或文件夾列表
*/
public static File[] listFile(String path, byte type) {
File[] result = null;
File f = new File(path);
switch (type) {
case TYPE_ALL:
result = f.listFiles();
break;
case TYPE_FILE:
result = f.listFiles(new MyFileFilter(true));
break;
case TYPE_DIR:
result = f.listFiles(new MyFileFilter(false));
break;
default:
result = f.listFiles();
}
return result;
}
}
/**
文件過濾器
*/
class MyFileFilter implements FileFilter {
//過濾所要保留的類型是否是文件
private boolean isFile = true;
MyFileFilter(boolean isFile) {
this.isFile = isFile;
}
public boolean accept(File pathname) {
if (isFile) {
if (pathname.isFile()) return true;
return false;
} else {
if (pathname.isDirectory()) return true;
return false;
}
}
}
輸出結果:
C:\bootfont.bin
C:\ntldr
C:\NTDETECT.COM
C:\CONFIG.SYS
C:\AUTOEXEC.BAT
C:\IO.SYS
C:\MSDOS.SYS
C:\GHLDR
C:\boot.ini
C:\錦衣衛TC國語中字修正聲音甄子丹趙薇2010最新動作大片.rmvb
C:\The.Hurt.Locker.2008.拆彈部隊.雙語字幕.HR-HDTV.AC3.1024x544.x264-人人影視.mkv
C:\Linux程序設計(第三版)_3of2.rar
C:\Linux程序設計(第三版)_3of1.rar
C:\Linux程序設計(第三版)_3of3.rar
C:\Linux程序設計(第三版)_目錄.rar
C:\4.txt
Process finished with exit code 0
網頁標題:面試題求解:用java列舉某個文件夾下所有的文件或者目錄編程題
網站鏈接:http://m.newbst.com/article30/pjcjpo.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、手機網站建設、外貿建站、軟件開發、、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯