`
QING____
  • 浏览: 2253319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA正则表达式过滤文件

    博客分类:
  • JAVA
 
阅读更多

    正则表达式过滤文件列表,听起来简单,如果用java实现,还真需要一番周折,本文简析2种方式

 

1、适用于路径确定,文件名时正则表达式的情况(jdk6的写法)

String filePattern = "/data/logs/.+\\.log";
File f = new File(filePattern);
File parentDir = f.getParentFile();
String regex = f.getName();
FileSystem FS = FileSystems.getDefault();
final PathMatcher matcher = FS.getPathMatcher("regex:" + regex);

DirectoryStream.Filter<Path> fileFilter = new DirectoryStream.Filter<Path>() {
    @Override
    public boolean accept(Path entry) throws IOException {
        return matcher.matches(entry.getFileName()) && !Files.isDirectory(entry);
    }
};

List<File> result = Lists.newArrayList();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(parentDir.toPath(), fileFilter)) {
    for (Path entry : stream) {
        result.add(entry.toFile());
    }
} catch (IOException e) {
    e.printStackTrace();
}
for(File file : result) {
    System.out.println(file.getParent() + "/" + file.getName());
}

 

2、适用于路径确定,文件名正则表达式的情况,这种正则表达式是JAVA支持的表达式,而非系统(unix)文件系统表达式(jdk8写法)

Path path = Paths.get("/data/logs");
Pattern pattern = Pattern.compile("^.+\\.log");
List<Path> paths = Files.walk(path).filter(p -> {
    //如果不是普通的文件,则过滤掉
    if(!Files.isRegularFile(p)) {
        return false;
    }
    File file = p.toFile();
    Matcher matcher = pattern.matcher(file.getName());
    return matcher.matches();
}).collect(Collectors.toList());

for(Path item : paths) {
    System.out.println(item.toFile().getPath());
}

 

分享到:
评论

相关推荐

    使用Java正则表达式分析处理日志

    本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...

    JAVA正则表达式过滤文件的实现方法

    JAVA正则表达式过滤文件的实现方法 JAVA正则表达式过滤文件的实现方法是指使用JAVA语言实现文件过滤的方法,通过使用正则表达式来匹配文件名或路径,从而实现对文件的过滤。下面将详细介绍两种实现方法。 方法一:...

    正则表达式 Java 判断字串是否合理

    根据给定的文件信息,我们可以总结出以下关于Java正则表达式的重要知识点: ### 1. 正则表达式简介 正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,...

    java正则表达式全

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在Java中主要通过`java.util.regex`包来实现,提供了`Pattern`、`Matcher`和`...

    正则表达式百度版

    在Unix工具中,如sed(流编辑器)、awk(一种数据处理脚本语言)和grep(全局正则表达式打印),正则表达式被广泛使用来处理文本文件。egrep是grep的一种增强版本,提供了更丰富的正则表达式支持。此外,vi编辑器的...

    Java正则表达式教程

    Java正则表达式教程是为那些想要深入了解Java编程语言中正则表达式使用方法的初学者准备的。正则表达式(Regular Expression)是一种强大的文本处理工具,它用于模式匹配、搜索、替换等操作,广泛应用于字符串处理和...

    java IO系统与正则表达式

    这段代码会读取名为"example.txt"的文件,并使用正则表达式查找所有包含单词"Java"的行,打印出匹配的文本。 综合运用Java IO系统和正则表达式,可以有效地处理和分析数据,无论是简单的文件读写还是复杂的文本处理...

    Java正则表达式功能及应用共7页.pdf.zip

    Java正则表达式是Java编程语言中的一个强大工具,它用于处理字符串,进行模式匹配和文本搜索与替换。正则表达式(Regular Expression)是一种特殊的字符序列,可以用来描述一个或多个字符串的模式。在Java中,正则...

    python正则表达式例子

    根据提供的文件信息,我们可以深入探讨正则表达式在Python中的应用。正则表达式是一种强大的文本处理工具,能够帮助我们高效地完成字符串的查找、替换等操作。下面将结合具体的例子来详细介绍正则表达式的使用方法...

    正则表达式验证工具

    例如,JavaScript、Python、Java等语言虽然都支持正则表达式,但具体的语法和功能细节可能有所不同。 总之,正则表达式验证工具是提升正则表达式使用体验的重要辅助工具,它们帮助我们更好地理解和调试正则表达式,...

    java正则表达式

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于Perl风格的正则表达式,可以用来进行文本的查找、替换和提取等操作。在Java中,正则表达式通过`java.util.regex`包提供的类和接口来实现。这篇博文...

    JAVA正则表达式

    Java正则表达式是Java编程语言中用于处理字符串模式匹配的一种强大工具。它基于Perl5的正则表达式语法,提供了灵活且强大的文本处理能力。在Java中,正则表达式通常通过`java.util.regex`包中的类来实现,如`Pattern...

    jsp+正则表达式实用总结

    5. **安全防护**:防止SQL注入和跨站脚本攻击(XSS),通过正则表达式过滤掉潜在的恶意输入。 6. **日志分析**:在处理日志文件时,正则表达式可以帮助快速定位和提取关键信息。 7. **数据提取**:从网页抓取或API...

    正则表达式系统教程

    3. 文件名过滤:在文件管理系统中,通过正则表达式筛选出符合条件的文件。 4. Web爬虫:在网页源代码中,利用正则表达式提取所需信息。 5. 编辑器或IDE:许多编辑器支持正则表达式的查找和替换功能,提高开发效率...

    正则表达式

    - Java正则表达式同样支持预查和后查,如`(?)`和`(?&lt;!...)`。 5. **C#中的正则表达式**: - C#通过`System.Text.RegularExpressions`命名空间提供正则表达式支持,如`Regex`类。 - `Regex.IsMatch()`、`Regex....

    正则表达式详细教程加测试工具

    在Linux、Unix或Windows的命令行中,正则表达式常用于文件查找、内容过滤等任务,这个专题可能详细讲解了相关命令和技巧。 《正则表达式30分钟入门教程.htm》与前面的入门教程相似,可能是HTML格式的版本,方便在线...

    java文件读写和正则表达式检索字符次位.pdf

    【Java文件读写】在Java编程中,文件读写是常见的操作,用于...以上是对给定文件内容中涉及的Java文件读写和正则表达式检索知识点的详细解释。在实际开发中,这些技术经常结合使用,以实现灵活且高效的文本处理功能。

    Java正则表达式使用

    Java正则表达式是Java语言中用于处理字符串的强大工具,它允许我们通过模式匹配和查找来解析、验证或提取文本。在本文中,我们将重点讨论如何在Java中使用正则表达式来抓取网页中的电子邮件地址以及进行代码统计。 ...

    java代码-在线 java正则表达式测试工具,java正则测试,在线java正则匹配

    Java正则表达式是编程语言Java中的一个强大功能,它允许开发者通过模式匹配来处理字符串。这个在线Java正则表达式测试工具就是为...通过阅读这两个文件,开发者可以更深入地理解和使用这个在线Java正则表达式测试工具。

Global site tag (gtag.js) - Google Analytics