1. 程式人生 > >java顯示目錄的基本資訊

java顯示目錄的基本資訊

程式碼:

import java.io.File;
import java.io.FilenameFilter;

public class Test {
     
	 
	 static class MyFilenameFilter implements FilenameFilter{
		 private String sf = "";                //定義檔案的字尾名
		 public MyFilenameFilter(String surfix){    //用構造法為sf變數賦值
			 this.sf = surfix;
		 }
		 
		 //重寫Filter介面中的accept()方法,判斷指定的檔案是否在指定的目錄中
		 public boolean accept( File dir,String name ){
			 if ( new File( dir,name ).isFile() ) //
				 return name.endsWith(sf);
			 else
				 return true;
		 }
		 
	 }
	
	 
	 /**
	  * 獲取指定目錄下符合指定字尾名的所有檔案
	  * @param filter  is 過濾器物件
	  * @param dir_path is 目錄路徑
	  */
     public static void getFilesByFilter(FilenameFilter filter,String dir_path){
    	 if ( !dir_path.endsWith(File.separator) )//如果dir_path不以檔案分隔符結尾,自動新增檔案分隔符
    		 dir_path = dir_path + File.separator;
    	 
    	 File dir_File = new File(dir_path);
    	 if ( !dir_File.exists() || ( !dir_File.isDirectory() ) ){//如果指定的目錄不存在或不是一個目錄,則返回
 			System.out.println("失敗!找不到指定目錄"+dir_path);
 			return;
 		}
    	 
    	//列出指定目錄下的所有符合過濾器條件的檔案(包括子目錄)
 		File[] fileArray = dir_File.listFiles(filter);//過濾
 		for ( int i = 0 ; i < fileArray.length ; i++ ){
 			if ( fileArray[i].isFile() )//如果是檔案就輸出絕對路徑
 				System.out.println( fileArray[i].getAbsolutePath() + " 是檔案");
 			else if ( fileArray[i].isDirectory()){//如果是目錄,就遞迴輸出目錄下的檔案的絕對路徑
 				System.out.println( fileArray[i].getAbsolutePath() + " 是目錄");
 				Test.getFilesByFilter( filter,fileArray[i].getAbsolutePath() );
 			}
 		}
    	 
     }

     
     
     
	 /**
	  * 列出目錄下所有檔案和子目錄路徑
	  * @param dirName is  目錄路徑
	  */
	 public static void getAllFiles( String dirName ){
		 
		if ( !dirName.endsWith(File.separator) )//如果dirName不以檔案分隔符結尾,自動新增檔案分隔符
			dirName = dirName + File.separator;
		
		File dirFile = new File(dirName);
		if ( !dirFile.exists() || ( !dirFile.isDirectory() ) ){//如果dirNmae對應的檔案不存在,或者不是一個資料夾,則返回
			System.out.println("失敗!找不到指定目錄"+dirName);
			return;
		}
		
		//列出原始檔夾下面的所有檔案(包括子目錄)
		File[] fileArray = dirFile.listFiles();
		for ( int i = 0 ; i < fileArray.length ; i++ ){
			if ( fileArray[i].isFile() )//如果是檔案就輸出絕對路徑
				System.out.println( fileArray[i].getAbsolutePath()+" ");
			else if ( fileArray[i].isDirectory()){//如果是目錄,就遞迴輸出目錄下的檔案的絕對路徑
				System.out.println( fileArray[i].getAbsolutePath()+" ");
				Test.getAllFiles( fileArray[i].getAbsolutePath() );
			}
		}
		
		System.out.println();//換行
		
	 }
	 
	 

	 /**顯示目錄的基本資訊**/
     public static void main(String[] args){
    	 
    	 String dir = "D:\\software\\eclipse\\Test";
    	 
    	 System.out.println( dir+"目錄下的內容:" );
    	 Test.getAllFiles(dir);
    	 System.out.println();//換行
    	 
    	 
    	 System.out.println( "符合過濾器條件的檔案如下:" );
    	 FilenameFilter myFilternameFilter = new Test.MyFilenameFilter(".class");//新建一個過濾器,引數為“src”
    	 Test.getFilesByFilter(myFilternameFilter, dir);//輸出
    	 
    	 
    	 
     } 
    	 
 
      

}

執行結果:

D:\software\eclipse\Test目錄下的內容:
D:\software\eclipse\Test\.classpath 
D:\software\eclipse\Test\.project 
D:\software\eclipse\Test\.settings 
D:\software\eclipse\Test\.settings\org.eclipse.jdt.core.prefs 

D:\software\eclipse\Test\bin 
D:\software\eclipse\Test\bin\Test$MyFilenameFilter.class 
D:\software\eclipse\Test\bin\Test.class 

D:\software\eclipse\Test\src 
D:\software\eclipse\Test\src\Test.java 



符合過濾器條件的檔案如下:
D:\software\eclipse\Test\.settings 是目錄
D:\software\eclipse\Test\bin 是目錄
D:\software\eclipse\Test\bin\Test$MyFilenameFilter.class 是檔案
D:\software\eclipse\Test\bin\Test.class 是檔案
D:\software\eclipse\Test\src 是目錄