package com.ym.test.file;
import java.io.*;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FileDirectorySearch {
/**
* 查询指定目录下的所有文件
* @param args
*/
public static void main(String[] args) {
// // TODO Auto-generated method stub
FileDirectorySearch star=new FileDirectorySearch();
// String path="d:";
// File war=new File(path);
// int count=star.findTxtFileCount(war,"exe");
// System.out.println("----: " + count);
File[] files = star.getFiles("d:/share", "*");
for(int i=0;i<files.length;i++){
System.out.println(files[i]);
}
}
/**
* 创建查询指定目录下文件的方法
*
* @param allList
* 指定目录
* @param endName
* 指定以“”结尾的文件
* @return 得到的文件数目
*/
public int findTxtFileCount(File allList,String endName){
//
int textCount=0;
// 创建fileArray名字的数组
File[] fileArray= allList.listFiles();
// 如果传进来一个以文件作为对象的allList 返回0
if(null==fileArray){
return 0;
}
// 偏历目录下的文件
for(int i=0;i<fileArray.length;i++){
// 如果是个目录
if(fileArray[i].isDirectory()){
// System.out.println("目录: "+fileArray[i].getAbsolutePath());
// 递归调用
textCount+=findTxtFileCount(fileArray[i].getAbsoluteFile(),endName);
// 如果是文件
}else if(fileArray[i].isFile()){
// 如果是以“”结尾的文件
if(fileArray[i].getName().endsWith(endName)){
// 展示文件
System.out.println("exe文件: "+fileArray[i].getAbsolutePath());
// 所有以“”结尾的文件相加
textCount++;
}
}
}
return textCount;
}
/**
* 在本文件夹下查找
* @param s String 文件名
* @return File[] 找到的文件
*/
public static File[] getFiles(String s)
{
return getFiles("./",s);
}
/**
* 获取文件
* 可以根据正则表达式查找
* @param dir String 文件夹名称
* @param s String 查找文件名,可带*.?进行模糊查询
* @return File[] 找到的文件
*/
public static File[] getFiles(String dir,String s) {
//开始的文件夹
File file = new File(dir);
s = s.replace('.', '#');
s = s.replaceAll("#", "\\\\.");
s = s.replace('*', '#');
s = s.replaceAll("#", ".*");
s = s.replace('?', '#');
s = s.replaceAll("#", ".?");
s = "^" + s + "$";
System.out.println(s);
Pattern p = Pattern.compile(s);
ArrayList list = filePattern(file, p);
File[] rtn = new File[list.size()];
list.toArray(rtn);
return rtn;
}
/**
* @param file File 起始文件夹
* @param p Pattern 匹配类型
* @return ArrayList 其文件夹下的文件夹
*/
private static ArrayList filePattern(File file, Pattern p) {
if (file == null) {
return null;
}
else if (file.isFile()) {
Matcher fMatcher = p.matcher(file.getName());
if (fMatcher.matches()) {
ArrayList list = new ArrayList();
list.add(file);
return list;
}
}
else if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null && files.length > 0) {
ArrayList list = new ArrayList();
for (int i = 0; i < files.length; i++) {
ArrayList rlist = filePattern(files[i], p);
if (rlist != null) {
list.addAll(rlist);
}
}
return list;
}
}
return null;
}
}
分享到:
相关推荐
Java 通过通配符查找文件 例如:*.*, *.java, a*.*, a*.java
带通配符的classpath使用“ClassLoader”的“Enumeration<URL>getResources(String name)”方法来查找通配符之前的资源,然后通过模式匹配来获取匹配的资源。 三、classpath的使用 classpath用在哪里?在编译打包...
- **内容搜索**:在Windows Vista及以上版本,可以搜索文件内容,不只是文件名。 - **文件夹限制**:限定搜索范围,只在特定的文件夹或驱动器中查找。 了解这些基础知识后,我们可以利用编程语言(如Python、C#等)...
【Java文件搜索工具V1.1】是一款基于Java编程语言开发的高效文件查找应用程序,它专为用户提供了灵活且强大的搜索功能。此工具允许用户按照多种条件定位到所需的文件,提高了在大量数据中的查找效率。 首先,让我们...
7. **网络共享**:除了本地搜索,Everything还支持通过网络共享搜索结果,使得多台计算机之间的文件查找变得更加便捷。 8. **自定义设置**:用户可以根据自己的需求自定义界面主题、快捷键,甚至可以通过API接口与...
Java反编译插件在软件开发领域中扮演着重要的角色,尤其对于Java开发者而言,它可以帮助我们理解已编译的`.class`文件内部的工作机制。`.class`文件是Java源代码经过编译后的二进制形式,它们包含了执行Java程序所需...
这可以通过在Windows搜索框中输入`cmd`并回车来实现。 2. 使用`cd`命令进入Java源代码所在的目录。例如,如果你的`helloworld.java`位于`C:\Users\YourName\Documents\Java`,则执行`cd C:\Users\YourName\Documents...
- **查找文件**:利用`LocatedFileStatus[] globStatus(Path pathPattern)`根据通配符查找文件。 - **拷贝文件/目录**:调用`boolean rename(Path src, Path dst)`,实现文件或目录的重命名(相当于拷贝并删除源文件...
Python的`glob`模块则提供了类似的功能,可以方便地根据通配符查找文件。 描述中提到的“博文链接:https://marlboro027.iteye.com/blog/1066692”是一个具体的博客文章链接,虽然没有提供具体内容,但我们可以推测...
Java桌面搜索(JDesktopSearch)是一个基于Java开发的桌面搜索引擎,它允许用户快速高效地在本地计算机上搜索文件、文档、电子邮件等内容。这个工具利用了Java的跨平台特性,因此可以在支持Java运行环境的操作系统上...
在Java中,我们可以使用`java.io.File`类的`list()`或`listFiles()`方法,配合通配符进行文件查找。例如,`list(FilenameFilter)`允许我们传入一个实现了`FilenameFilter`接口的类实例,该接口的`accept()`方法可以...
"JAVA练习题压缩文件"提供了丰富的练习题目,帮助学习者巩固理论知识,提高编程能力。 这个压缩文件包含的"JAVA练习题"可能涵盖以下几个核心知识点: 1. **基础语法**:包括变量声明、数据类型(如基本类型、引用...
标题“本地文件快速查找”和描述中的“本机快速查找文件,可根据关键字很迅速的把文件全部查找,速度特快”都指向了这个核心主题:高效地在计算机本地存储中搜索文件。 文件查找技术主要分为两类:基于索引的搜索和...
你可以通过研究这个版本的源代码来深入理解Lucene的工作原理,或者直接使用这些库文件在你的项目中集成Lucene 3.6.1版本的搜索功能。记得在使用时,确保与你的Java运行环境兼容,并考虑升级到最新版本以获得最新的...
HelloNative.java 准备调用C函数的java文件 HelloNative.lib 用VC编译生成的静态库文件 HelloNative.obj 用VB编译生成的目标文件 HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个...
总的来说,"windows本地文件快速搜索工具"如"Everything.exe"极大地提升了Windows用户的文件查找效率,尤其适合经常需要在大量文件中寻找特定信息的工作场景。无论是日常办公还是开发者调试,它都是不可或缺的实用...
如果需要查找特定类型的文件,比如.txt文件,可以使用`glob.glob(pattern)`,其中`pattern`可以包含通配符,如 "*.txt"。这样,`glob.glob()`会返回匹配该模式的所有文件路径。 在Java中,可以使用`Files.walk()`...
Java实现文件搜索工具类,支持通配符查询功能并返回所得到的File对象
classpath变量用于指定Java类加载器在查找类时需要搜索的目录路径。具体来说,path变量需要在原有值的基础上添加JDK安装目录下的bin文件夹路径,而classpath变量则需要指定JDK安装目录下的lib文件夹路径。 关于环境...
在数据库环境中,例如在文件索引服务如Elasticsearch或Solr中,可以利用其提供的API来高效搜索文件内容。这些服务会预先建立文件内容的索引,从而实现全文搜索和快速匹配。通过HTTP接口发送查询请求,即可返回匹配的...