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. sql 如何将拼的sql语句结果赋值给变量

    SET @SQLS='select @AllUser=count(1) from (select PhoneId from '+@TABLE+' where SiteId='+convert(VARC ...

  2. 【转】Caffe初试(十)命令行解析

    caffe的运行提供三种接口:C++接口(命令行).Python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两种接口. caffe的C++主程序(caffe.cpp)放在根目录下 ...

  3. JS脚本语言是什么意思?

    javascript,Javascript是一种浏览器端的脚本语言,用来在网页客户端处理与用户的交互,以及实现页面特效.比如提交表单前先验证数据合法性,减少服务器错误和压力.根据客户操作,给出一些提升 ...

  4. Myeclipse导包总是报错,jar包路径都没问题

    是访问限制报错. 方法一: 全局属性Project>preferences>java>Compiler>Errors/Warnings>把右侧的[Deprecated a ...

  5. Node的express框架安装

    第一步:在cmd命令行下执行npm install -g express,安装全局的express. 第二步:在命令行中输入express,如果出现express不是内部命令时, 输入npm inst ...

  6. InvokeRequired 线程间访问

    zt: http://www.x2blog.cn/jinhong618/?tid=22389 问: f (this.InvokeRequired)            {               ...

  7. HTTP协议请求响应过程和HTTPS工作原理

    HTTP协议 HTTP协议主要应用是在服务器和客户端之间,客户端接受超文本. 服务器按照一定规则,发送到客户端(一般是浏览器)的传送通信协议.与之类似的还有文件传送协议(file transfer p ...

  8. 【leetcode】ZigZag Conversion

    题目简述 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows ...

  9. android二维码生成

    前生: 一维码:条形码  数字 缺点:不好看,占面积, 好了,请看效果图: 在准备之前我们要导一个包:core-3.2.1.jar 下载请访问: http://download.csdn.net/do ...

  10. SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称

    SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称   原来数据库名称为 aa,物理文件名称为 aa.mdf 和 aa_log.ldf:   需要修改数据库名称为 bb,物理文件名 ...