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     }
posted @ 2014-07-20 22:59  云谷子  阅读(2797)  评论(0编辑  收藏  举报