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. ASP.NET MVC 设置Area中 Controller 的方法 默认启动页

    MVC中通常分区域编程,互不干扰,如果需要设置某个区域下面的某个控制器下面的某个方法为默认启动页的话,直接修改项目的路由如下: public static void RegisterRoutes(Ro ...

  2. Javascript中数组的基本操作

    删除数组指定的某个元素 via首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: Array.prototype.indexOf = function(val) ...

  3. [转]序列化悍将Protobuf-Net,入门动手实录

    最近在研究web api 2,看了一篇文章,讲解如何提升性能的, 在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器 1:安装篇 谷歌官方没有提供.n ...

  4. Oracle SqlDeveloper创建JOB

    步骤1: 步骤2: 步骤3:

  5. java 的 struts2 Spring Hibernate 三大框架的整合

    原理就不说了,直接上配置文件及代码,用来备用 首先,将三大框架所需要的jar包导入项目中 导入  struts2-spring-plugin-2.3.3.jar包  此包的作用是作为struts2 与 ...

  6. SQL谜题(楼层谜题)

    Multiple DwellingsBaker, Cooper, Fletcher, Miller and Smith live on different floors of an apartment ...

  7. PL/SQL客户端中执行insert语句,插入中文乱码

    问题描述:在PL/SQL客户端中执行insert语句,插入中文乱码 解决方案: 1.执行脚本 select userenv('language') from dual;    结果为AMERICAN_ ...

  8. 关于SVN出现 svn working copy locked的原因及解决方法

    今天使用SVN时电脑卡住了,于是结束进程中断了SVN的操作,于是出现了如题问题, 产生这种情况大多是因为上次svn更新命令执行失败且被自动锁定了. 如果cleanup没有效果的话只好手动删除锁定文件. ...

  9. sprint3

    Sprint 3计划会议: 团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松: ...

  10. [DataMining]WEEK1 - text-retrieval and search engine

    What does a computer have to do in order to understand a natural language sentence? What is ambiguit ...