您好,登錄后才能下訂單哦!
有人問及一個用java列舉某個文件夾下所有的文件或者目錄編程題。結果他不加思索的寫了十幾行代碼,就搞定了,結果面試官說等通知,直到最后都沒通知他,我猜想出題人的最終想法是看如何封裝代碼,如何靈活使用豐富的API。
于是我試著寫一個可選擇結果,希望對各位有用:
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。