取得目錄底下,所有目錄或檔案的幾種方式
以下記錄的有點亂, 有些可能自己也不是很理解, 純粹是實
作的心得, 也許有誤膠之處
FileUtils是apache common io的功能
取得目錄底下,所有目錄的幾種方式
Collection
Collection
Collection
會取得本身目錄,子目錄及遞回所有目錄
foundDir = FileUtils.listFilesAndDirs(ddir, new NotFileFilter( TrueFileFilter.INSTANCE), DirectoryFileFilter.DIRECTORY);
foundDir2 = FileUtils.listFilesAndDirs(ddir, new NotFileFilter( TrueFileFilter.INSTANCE),
DirectoryFileFilter.INSTANCE);
只會取得本身目錄(不遞回)
foundDir1 = FileUtils.listFilesAndDirs(ddir, new NotFileFilter(TrueFileFilter.INSTANCE), null);
列出所有檔案(不含目錄),且遞迴
foundFiles = FileUtils.listFiles(file,
TrueFileFilter.INSTANCE, DirectoryFileFilter.DIRECTORY);
列出所有檔及目錄(包括本身目錄),且遞迴
Collection
EngListActivity.ndir, TrueFileFilter.INSTANCE, DirectoryFileFilter.INSTANCE);
取得目錄底下,所有目錄,但不遞回 缺點:無法預知有幾個,因此無法決定lstDictItem個數
String[] names = ddir.list();
int i=0;
for(String name : names) { if (new File(ddir,name).isDirectory())
{ lstDictItem[i++] = name; } }
取得目錄底下,所有目錄,但不遞回 可以預知有幾個,可以決定lstDictItem個數
String[] directories = ddir.list(new FilenameFilter() {
@Override
public boolean accept(File current, String name) {
return new File(current, name).isDirectory();
}
});
第二個參數,過濾檔案,第三個參數:如果是null則不recursive
列出目錄和檔案
FileUtils.listFilesAndDirs(folder, TrueFileFilter.INSTANCE,
DirectoryFileFilter.DIRECTORY);
列出目錄和檔案(不遞回) FileUtils.listFilesAndDirs(folder, TrueFileFilter.INSTANCE,null);
只列出目錄, recursive的方式
foundDir = FileUtils.listFilesAndDirs(folder, new NotFileFilter(TrueFileFilter.INSTANCE), DirectoryFileFilter.DIRECTORY);
上例中:new NotFileFilter(TrueFileFilter.INSTANCE) 等同於 FalseFileFilter.INSTANCE ?
只列出檔案, recursive的方式 foundDir = FileUtils.listFiles(folder,
TrueFileFilter.INSTANCE, DirectoryFileFilter.DIRECTORY);
只顯示特定檔案 foundDir = FileUtils.listFiles(folder, new WildcardFileFilter( new
String[] {"*.txt", "*.doc", "*.pdf"}),DirectoryFileFilter.DIRECTORY);
另一個使用方式,第三個參數,以true,false控制是否recursive
String[] extensions = new String[] {
"txt", "jsp" }; List
extensions, true);
取得目錄底下,所有目錄,但不遞回 可以預知有幾個,可以決定lstDictItem個數
String[] directories = ddir.list(new FilenameFilter() {
@Override
public boolean accept(File current, String name) { return new
File(current, name).isDirectory(); } });