java顯示目錄的基本資訊
阿新 • • 發佈:2019-01-06
程式碼:
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 是目錄