在 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() + " 個檔案 !!" );
}
}