Java实现文件在某个目录的检索
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实现文件在某个目录的检索的更多相关文章
- java获取文件的父目录
File file = new File("a.txt"); String parentPath = file.getParent(); // null File parentDi ...
- java创建文件和目录
java创建文件和目录 2013-09-04 12:56 99933人阅读 评论(7) 收藏 举报 分类: JAVA基础(10) 版权声明:本文为博主原创文章,未经博主允许不得转载. 创建文件和目 ...
- 用java 代码下载Samba服务器上的文件到本地目录以及上传本地文件到Samba服务器
引入: 在我们昨天架设好了Samba服务器上并且创建了一个 Samba 账户后,我们就迫不及待的想用JAVA去操作Samba服务器了,我们找到了一个框架叫 jcifs,可以高效的完成我们工作. 实践: ...
- java解压多层目录中多个压缩文件和处理压缩文件中有内层目录的情况
代码: package com.xiaobai; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...
- java上传文件获取跟目录的办法
在java中获得文件的路径在我们做上传文件操作时是不可避免的.web 上运行1:this.getClass().getClassLoader().getResource("/"). ...
- Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录
Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator // ...
- 用Java写一个递归遍历目录下面的所有文件
java获取文件的属性如文件大小和修改时间: long mysize = file.length();long lastModified = file.lastModified();System.ou ...
- java安全编码指南之:文件和共享目录的安全性
目录 简介 linux下的文件基本权限 linux文件的特殊权限 Set UID 和 Set GID Sticky Bit SUID/SGID/SBIT权限设置 文件隐藏属性 特殊文件 java中在共 ...
- java基本权限指南之:文件和共享目录的基本权限
简介 java程序是跨平台的,可以运行在windows也可以运行在linux.但是平台不同,平台中的文件权限也是不同的.windows大家经常使用,并且是可视化的权限管理,这里就不多讲了. 本文主要讲 ...
随机推荐
- 广义线性模型(Generalized Linear Models)
前面的文章已经介绍了一个回归和一个分类的例子.在逻辑回归模型中我们假设: 在分类问题中我们假设: 他们都是广义线性模型中的一个例子,在理解广义线性模型之前需要先理解指数分布族. 指数分布族(The E ...
- Duilib源码分析(六)整体流程
在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...
- 浅谈WEB前后端分离
重审业务逻辑 用过MVC的童鞋都知道业务逻辑(Bussiness Logic),但是大多对这概念又是模棱两可,业务逻辑从来都是这样难以理解,谈论前后端分离之前这个概念非常有必要探讨一下! 在简单的CR ...
- [Javascript] 前端随笔
做一个小功能时使用到的一点技术点记录下来: 1.在js中使用定时器: 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTime ...
- 安装minicom
安装配置过程: 1.sudo apt-get install minicom 2.执行:sudo minicom -s 配置minicom 切记加sudo 3.然后选择Serial port setu ...
- linux中redis的主从
主从模式的概念请自行百度! 主服务器只执行写操作.从服务器执行读操作. 主服务器中的数据会同步到从服务器中. 在从服务器中打开redis目录中的redis.conf文件 vim /usr/local/ ...
- 进击的Python【第四章】:Python的高级应用(一)
Python的高级应用(一) 本章内容: 内置函数 生成器 迭代器 装饰器 JSON和PICKLE的简单用法 软件目录结构规范 一.内置函数 1.数学运算类 abs(x) 求绝对值1.参数可以是整型, ...
- hoj 2662 经典状压dp // MyFirst 状压dp
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2662 1.引言:用dp解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态. ...
- 国外程序员整理的Java资源大全分享
Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...
- 打包如何打包额外文件,比如Sqlite数据库的db文件
http://aigo.iteye.com/blog/2278224 Project Settings -> packaging -> Packaging选项中,有多个设置项来设置打包时要 ...