Java查询指定文件目录下指定文件名的文件的方法

简介: Java通过正则表达式Regex,和通配模式The globbing pattern查询指定文件目录下指定文件名的文件
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importjava.io.File;
importjava.nio.file.DirectoryStream;
importjava.nio.file.Files;
importjava.nio.file.Path;
importjava.nio.file.Paths;
publicclassTestDirectoryFileMain {
privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(TestDirectoryFileMain.class);
publicstaticvoidmain(String []args) throwsException {
Stringpath="C:\\Windows\\System32";
PathsourcePath=Paths.get(path);
StringfilenameReg="kd_*_*.dll";
System.out.println("======Files.newDirectoryStream======");
longstart=System.currentTimeMillis();
try(DirectoryStream<Path>newStream=Files.newDirectoryStream(sourcePath,filenameReg)){
newStream.forEach(x-> {
System.out.println(x.getFileName().toString());
            });
        }
System.out.println(System.currentTimeMillis()-start);
System.out.println("======dir.listFiles()======");
longstart2=System.currentTimeMillis();
Filedir=newFile(path);
File[] files=dir.listFiles();
for(Filefile:files){
if(file.getName().matches("kd_[\\w]*_[\\w]*.dll")){
System.out.println(file.getName());
            }
        }
System.out.println(System.currentTimeMillis()-start2);
    }
}

直接上代码,上面是globbing pattern通配符的实现,下面是Regex正则表达式的实现,执行结果输出都是一样的,在代码中的目录下Regex正则表达式反而更快一些,不知道在这里是不是与目录下的文件数量有关,这里不是为了验证哪个性能更高,只是探索几种方式实现查询目录下符合指定规则文件名的文件有哪些,也是为了满足实际业务需求。globbing pattern通配符很简洁,对性能没要求的情况下推荐使用。

目录
相关文章
|
25天前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
68 9
|
11天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
73 34
|
23天前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
34 8
|
23天前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
37 4
|
23天前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
24 4
|
21天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
24 1
|
28天前
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
40 3
|
28天前
|
分布式计算 Java Hadoop
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
通过以上步骤,可以有效地解决 `HADOOP_HOME`和 `JAVA_HOME`删除后依然指向旧目录的问题。确保在所有相关的配置文件中正确设置和删除环境变量,并刷新当前会话,使更改生效。通过这些措施,能够确保系统环境变量的正确性和一致性。
25 1
|
Java
JAVA方法的定义
JAVA方法的定义
95 0