• 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     }
  • 相关阅读:
    Bw树:新硬件平台的B树(内存数据库中的b树索引)
    SQL Server 列存储索引强化
    SQL Server Column Store Indeses
    我了解的数据库事务复制
    [MySQL Reference Manual] 10 全球化
    [20141208]数据库复制并不会复制索引创建删除
    10个超赞的jQuery图片滑块动画
    推荐20款JavaScript框架给前端开发者
    7个华丽的基于Canvas的HTML5动画
    10个非常炫酷的jQuery相册动画赏析
  • 原文地址:https://www.cnblogs.com/lifescolor/p/3857479.html
Copyright © 2020-2023  润新知