首页 > 代码库 > Java实现文件在某个目录的检索

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                 }else127                 {128                     size=size+flist[i].length();129                 }130             }131             132             return size;                133         }134         135         136         137     }