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大家经常使用,并且是可视化的权限管理,这里就不多讲了. 本文主要讲 ...
随机推荐
- Css样式表【边界边框】【列表方块】
一.如何给div加边框?[边界边框] 我们先做一个整个边框,并附加成绿色的边框. ①使用属性border进行设置. →→ ②也可以单独更改某个边的边框线的颜色,利用border属性更改. 如果将div ...
- 1280*720P和1920*1080P的视频在25帧30帧50帧60帧时的参数
- 给hadoop新手的一封信:Hadoop入门自学及对就业的帮助
学习指南,刚接触这个确实有点懵逼,感觉还有很多东西要学要看,自己要逐渐构造成一个框架的体系. 附上一个学习博客地址: http://www.cnblogs.com/mephisto/p/4835386 ...
- vnc远程运行3D游戏
使用的版本:VNC-5.2.3-Windows.exe vnc官网 安装的过程中需要输入license key,以下给出一些enterprise license(最大权限的License): K5 ...
- ASP.NET Boilerplate终于发布v1.0了
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:ABP经过2年多的开发,终于发布第一个主要版本了,谨此提醒ABP的使用者. ASP.N ...
- 标准io与文件io
A: 代码重复: 语句块1: while(判断) { 语句块2: 语句块1: } 上面可以改写为: while(1) { 语句块1: if(判断) break: 语句块2: } B: 标准IO和文件I ...
- MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments
Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...
- Python 格式化输出
转载 今天写程序又记不清格式化输出细节了--= =索性整理一下. 注意: 与C/C++ 不同的是这里括号后面不需要加' , '号. python print格式化输出. 1. 打印字符串 print ...
- Mac下搭建php开发环境[翻译]+自己总结(红字)
原英文链接:http://www.codeweblog.com/mac-os-x-to-configure-apache-php-mysql/ Mac OS X 内置了Apache 和 PHP,这样使 ...
- 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...