2016年5月16日 星期一

取得目錄底下,所有目錄或檔案的幾種方式

以下記錄的有點亂, 有些可能自己也不是很理解, 純粹是實
作的心得, 也許有誤膠之處

FileUtils是apache common io的功能


取得目錄底下,所有目錄的幾種方式

Collection foundDir = null; 
Collection foundDir1 = null;
Collection foundDir2 = null;

會取得本身目錄,子目錄及遞回所有目錄
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 fileList = FileUtils.listFilesAndDirs(
 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 files = (List) FileUtils.listFiles(dir,
 extensions, true);

取得目錄底下,所有目錄,但不遞回 可以預知有幾個,可以決定lstDictItem個數
 String[] directories = ddir.list(new FilenameFilter() {
 @Override
 public boolean accept(File current, String name) { return new
 File(current, name).isDirectory(); } });


  © Blogger templates Psi by Ourblogtemplates.com 2008

Back to TOP