Java实现文件在某个目录的检索

  1 package com.filetest;

  2 

  3 import java.io.File;

  4 import java.util.Date;

  5 import java.util.Scanner;

  6 

  7 public class findfile {

  8 

  9         public static void main(String args[]){

 10             

 11             find();  //调用查找函数

 12             

 13         }

 14 

 15         private static  void find() {

 16             

 17             Scanner scanner=new Scanner(System.in);

 18             System.out.println("请输入文件名:");    

 19             String filename=scanner.next();        //输入要查找的文件名

 20             

 21             System.out.println("请输入目录(输入end退出程序):");        

 22             String findpath=scanner.next();        //输入路径

 23             

 24             File file=new File(findpath);

 25             

 26             if(!file.exists()||!file.isDirectory()){    //判断该路径是否存在,是否是目录

 27                 

 28                 if(findpath.equals("end"))            //结束判断条件

 29                 {

 30                     System.out.println("程序结束,感谢使用!");

 31                     System.exit(-1);

 32                 }

 33                 else        //输入错误,重新输入

 34                 {

 35                     System.out.println("输入的路径不存在,请重新输入!(输入end退出程序)");

 36                     find();        //递归调用

 37                 }

 38                             

 39             }

 40             

 41             String[] names=file.list();    //输入的路径下的文件或目录

 42             

 43             int i=0;    //定义数组长度变量

 44             int t=0;

 45             

 46             //查找到的文件属性数组的初始化

 47             String[] findname=new String[100];

 48             long[] sizefile=new long[100];

 49             String[] timefile=new String[100];

 50             

 51             //查找到的目录属性数组的初始化

 52             String[] findDirectory=new String[100];

 53             long[] sizeDirectory=new long[100];

 54             String[] timeDirectory=new String[100];

 55             

 56             for(String name:names){        //遍历输入的路径下的文件和文件夹

 57                 

 58                 File files=new File(findpath+"\\"+name);

 59         

 60                 if(files.isFile())        //判断该路径下是文件还是目录

 61                 {        

 62                     

 63                     if(name.contains(filename)){  //判断文件名字是否包含输入的文件名,如果包含则输出属性(名字,大小,时间)

 64                         findname[i]=files.getName();

 65                         sizefile[i]=files.length();        

 66                         Date date=new Date(files.lastModified());

 67                         timefile[i]=date.toString();

 68                         i++;

 69                     }

 70                 }

 71                 else

 72                 {

 73                      if(name.contains(filename)){    //判断目录名字是否包含输入的文件名,如果包含则输出属性(名字,大小,时间)

 74                      findDirectory[t]=files.getName();

 75                      try {

 76                         sizeDirectory[t]=getFileSize(files);

 77                     } catch (Exception e) {

 78                         e.printStackTrace();

 79                     }        

 80                      Date date=new Date(files.lastModified());

 81                      timeDirectory[t]=date.toString();

 82                      t++;

 83                      }

 84                 }

 85                 

 86             }

 87             

 88             

 89             

 90             if(i!=0){        //文件数组不为空,查找到文件名字有包含输入的文件名,输出文件的名字和属性

 91             System.out.println("该目录下发现"+(i)+"个文件与您输入的名字类似,列表如下:");

 92             for(int x=0;x<i;x++){            

 93                 System.out.println("文件名:           "+findname[x]);

 94                 System.out.println("文件大小:       "+sizefile[x]+"字节");

 95                 System.out.println("最后修改时间:"+timefile[x]);

 96                 System.out.println();

 97             }

 98             System.out.println();

 99            }

100             

101             

102             if(t!=0){        //目录数组不为空,查找到目录名字有包含输入的文件名,输出目录的名字和属性

103             System.out.println("该目录下发现"+(t)+"个文件夹与您输入的名字类似,列表如下:");

104             for(int x=0;x<t;x++){            

105                 System.out.println("文件名:           "+findDirectory[x]);

106                 System.out.println("文件大小:       "+sizeDirectory[x]+"字节");

107                 System.out.println("最后修改时间:"+timeDirectory[x]);

108                 System.out.println();

109                 }

110             System.out.println();

111             }

112             

113             if(i==0&&t==0){    //未找到包含输入的文件名的文件和目录

114                 System.out.println("未发现你要查询的文件,程序结束,感谢使用!");

115                 System.exit(-1);

116             }

117         }

118         

119         public static long getFileSize(File f) throws Exception        //递归计算文件夹的大小

120         {

121             long size=0;

122             File flist[]=f.listFiles();

123             for(int i=0;i<flist.length;i++){

124                 if(flist[i].isDirectory()){

125                     size=size+getFileSize(flist[i]);

126                 }else

127                 {

128                     size=size+flist[i].length();

129                 }

130             }

131             

132             return size;                

133         }

134         

135         

136         

137     }

你可能感兴趣的:(java实现)