在 Java 要取得指定目錄的檔案清單,
可利用 File Class 的 list() 方法即可, 其傳回值型態為 String[],
但是這只會取得第一層的檔案清單,
若要取得包含子目錄的檔案清單,
可以參考以下範例 :
程式碼
import java.io.File; import java.util.ArrayList; import java.util.List; public class HelloTomKuo { /** 檔案集合 */ private List<String> gFileList = new ArrayList<String>(); /** 取得檔案清單 * @param pPath : 目錄位置 * @param pIncludeSubDirectory : 是否包含子目錄的檔案 * @param pFilter : 過濾關鍵字 (* 為全部) */ private void getFiles( File pPath , boolean pIncludeSubDirectory , String pFilter ) { // 檔案清單 String[] vFileArray = pPath.list(); for( int i = 0; i < vFileArray.length; i++ ) { // 完整路徑 File f = new File( pPath + "\\" + vFileArray[i] ); // 包含子目錄, 則繼續取得子目錄內的檔案清單 if( pIncludeSubDirectory && f.isDirectory() ) { getFiles( f, pIncludeSubDirectory, pFilter ); } // 檔案, 則加入到 File List 中 else { if( pFilter.equals("*") || f.getPath().indexOf(pFilter) >= 0 ) gFileList.add( pPath + "\\" + vFileArray[i] ); } } } public static void main(String[] args) { HelloTomKuomain = new HelloTomKuo(); // 指定的目錄 String vTopPath = "C:\\圖片"; File vTopPathFile = new File( vTopPath ); // 取得該目錄內的所有檔案 main.getFiles( vTopPathFile, true, "精選" ); // 顯示取得的檔案清單 for( String vFileName : main.gFileList ) System.out.println( vFileName ); System.out.println( "共找到 " + main.gFileList.size() + " 個檔案 !!" ); } }