package com.filetest;

 import java.io.File;
import java.util.Date;
import java.util.Scanner; public class findfile { public static void main(String args[]){ find(); //调用查找函数 } private static void find() { Scanner scanner=new Scanner(System.in);
System.out.println("请输入文件名:");
String filename=scanner.next(); //输入要查找的文件名 System.out.println("请输入目录(输入end退出程序):");
String findpath=scanner.next(); //输入路径 File file=new File(findpath); if(!file.exists()||!file.isDirectory()){ //判断该路径是否存在,是否是目录 if(findpath.equals("end")) //结束判断条件
{
System.out.println("程序结束,感谢使用!");
System.exit(-1);
}
else //输入错误,重新输入
{
System.out.println("输入的路径不存在,请重新输入!(输入end退出程序)");
find(); //递归调用
} } String[] names=file.list(); //输入的路径下的文件或目录 int i=0; //定义数组长度变量
int t=0; //查找到的文件属性数组的初始化
String[] findname=new String[100];
long[] sizefile=new long[100];
String[] timefile=new String[100]; //查找到的目录属性数组的初始化
String[] findDirectory=new String[100];
long[] sizeDirectory=new long[100];
String[] timeDirectory=new String[100]; for(String name:names){ //遍历输入的路径下的文件和文件夹 File files=new File(findpath+"\\"+name); if(files.isFile()) //判断该路径下是文件还是目录
{ if(name.contains(filename)){ //判断文件名字是否包含输入的文件名,如果包含则输出属性(名字,大小,时间)
findname[i]=files.getName();
sizefile[i]=files.length();
Date date=new Date(files.lastModified());
timefile[i]=date.toString();
i++;
}
}
else
{
if(name.contains(filename)){ //判断目录名字是否包含输入的文件名,如果包含则输出属性(名字,大小,时间)
findDirectory[t]=files.getName();
try {
sizeDirectory[t]=getFileSize(files);
} catch (Exception e) {
e.printStackTrace();
}
Date date=new Date(files.lastModified());
timeDirectory[t]=date.toString();
t++;
}
} } if(i!=0){ //文件数组不为空,查找到文件名字有包含输入的文件名,输出文件的名字和属性
System.out.println("该目录下发现"+(i)+"个文件与您输入的名字类似,列表如下:");
for(int x=0;x<i;x++){
System.out.println("文件名: "+findname[x]);
System.out.println("文件大小: "+sizefile[x]+"字节");
System.out.println("最后修改时间:"+timefile[x]);
System.out.println();
}
System.out.println();
} if(t!=0){ //目录数组不为空,查找到目录名字有包含输入的文件名,输出目录的名字和属性
System.out.println("该目录下发现"+(t)+"个文件夹与您输入的名字类似,列表如下:");
for(int x=0;x<t;x++){
System.out.println("文件名: "+findDirectory[x]);
System.out.println("文件大小: "+sizeDirectory[x]+"字节");
System.out.println("最后修改时间:"+timeDirectory[x]);
System.out.println();
}
System.out.println();
} if(i==0&&t==0){ //未找到包含输入的文件名的文件和目录
System.out.println("未发现你要查询的文件,程序结束,感谢使用!");
System.exit(-1);
}
} public static long getFileSize(File f) throws Exception //递归计算文件夹的大小
{
long size=0;
File flist[]=f.listFiles();
for(int i=0;i<flist.length;i++){
if(flist[i].isDirectory()){
size=size+getFileSize(flist[i]);
}else
{
size=size+flist[i].length();
}
} return size;
} }

Java实现文件在某个目录的检索的更多相关文章

  1. java获取文件的父目录

    File file = new File("a.txt"); String parentPath = file.getParent(); // null File parentDi ...

  2. java创建文件和目录

    java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报  分类: JAVA基础(10)  版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...

  3. 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器

    引入: 在我们昨天架设好了Samba服务器上并且创建了一个 Samba 账户后,我们就迫不及待的想用JAVA去操作Samba服务器了,我们找到了一个框架叫 jcifs,可以高效的完成我们工作. 实践: ...

  4. java解压多层目录中多个压缩文件和处理压缩文件中有内层目录的情况

    代码: package com.xiaobai; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...

  5. java上传文件获取跟目录的办法

    在java中获得文件的路径在我们做上传文件操作时是不可避免的.web 上运行1:this.getClass().getClassLoader().getResource("/"). ...

  6. Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...

  7. 用Java写一个递归遍历目录下面的所有文件

    java获取文件的属性如文件大小和修改时间: long mysize = file.length();long lastModified = file.lastModified();System.ou ...

  8. java安全编码指南之:文件和共享目录的安全性

    目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中在共 ...

  9. java基本权限指南之:文件和共享目录的基本权限

    简介 java程序是跨平台的,可以运行在windows也可以运行在linux.但是平台不同,平台中的文件权限也是不同的.windows大家经常使用,并且是可视化的权限管理,这里就不多讲了. 本文主要讲 ...

随机推荐

  1. Hadoop HA高可用性架构和演进分析(转)

    1.概况 截至目前,Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0.前者主要有如下几种实现方式:1)社区版本基于S ...

  2. 给hadoop新手的一封信:Hadoop入门自学及对就业的帮助

    学习指南,刚接触这个确实有点懵逼,感觉还有很多东西要学要看,自己要逐渐构造成一个框架的体系. 附上一个学习博客地址: http://www.cnblogs.com/mephisto/p/4835386 ...

  3. 剑指Offer-【面试题03:二维数组中的查找】

    package com.cxz.question3; /* * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. * 请完成一个函数,输入这样的一个二维数组和 ...

  4. MySQL和Lucene索引对比分析

    MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过 ...

  5. PHPCMS_V9 模型字段添加单文件上传功能

    后台有“多文件上传”功能,但是对于有些情况,我们只需要上传一个文件,而使用多文件上传功能上传一个文件,而调用时调用一个文件URL太麻烦了. 使用说明: 1.打开phpcms\modules\conte ...

  6. HashMap两种遍历方式的深入研究

    转自:http://swiftlet.net/archives/1259 HashMap的遍历有两种方式,如下所示:第一种利用entrySet的方式:   1 2 3 4 5 6 7 Map map ...

  7. webrtc中APM(AudioProcessing module)的使用2

    这个其实就是从Audio_processing.h中拿出来的. APM should be placed in the signal chain as close to the audio hardw ...

  8. -webkit-tap-highlight-color

    css3中有henduo 新属性,tap-highlight-color;是用于元素在移动设备IOS和adnroid上被触发点击事件时,响应的背景框的颜色. 例如在Adnroid版本的微信中,点击a标 ...

  9. iOS drewRect方法

    You do not need to override this method if your view sets its content in other ways. By the time thi ...

  10. POJ No.3617【B008】

    [B007]Best Cow Line[难度B]———————————————————————————————————————————————— [Description    支持原版从我做起!!! ...