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 是目录

猜你喜欢

转载自blog.csdn.net/weixin_44365021/article/details/85861136