惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
WordPress大学
WordPress大学
GbyAI
GbyAI
T
Tailwind CSS Blog
Know Your Adversary
Know Your Adversary
小众软件
小众软件
Security Latest
Security Latest
博客园 - 聂微东
P
Privacy International News Feed
L
Lohrmann on Cybersecurity
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - 叶小钗
Last Week in AI
Last Week in AI
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
NISL@THU
NISL@THU
Spread Privacy
Spread Privacy
Google DeepMind News
Google DeepMind News
P
Palo Alto Networks Blog
S
Schneier on Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Exploit Database - CXSecurity.com
月光博客
月光博客
C
CERT Recently Published Vulnerability Notes
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
量子位
K
Kaspersky official blog
T
Threatpost
Latest news
Latest news
The Cloudflare Blog
MyScale Blog
MyScale Blog
C
Cisco Blogs
T
Tor Project blog
S
Securelist
Cisco Talos Blog
Cisco Talos Blog
The GitHub Blog
The GitHub Blog
A
Arctic Wolf
T
Threat Research - Cisco Blogs
H
Help Net Security
C
CXSECURITY Database RSS Feed - CXSecurity.com

博客园 - 逍遥子

MSN空间上的以往技术贴整理 Link Java to Maple - 逍遥子 C++的多态的被覆盖的问题 类引用机制 - 逍遥子 - 博客园 防止盗链的简单技术 验证码(CAPTCHA)的破解技术 校内网狗狗刷骨机完全版(不再维护) - 逍遥子 - 博客园 HTTP外挂的简单实现 C++的中英文字符串表示(string,wstring) C++学习之2--10.09题目答案 C++学习之一--基本介绍 下面内容为C++的教学 VC6的C++标准支持不完全 XML基础学习1 数论中求公因子、求模逆的算法 QuickSort和MergeSort算法及其效率比较源代码 继承、重载运算符、虚函数与向量、矩阵运算 数据库时间段分组查询解决方法和数据转储方法 动态加载Java运行环境和运行实例
Java 通配符匹配查找文件
逍遥子 · 2008-06-09 · via 博客园 - 逍遥子

    找了半天,网上也没有找到一个有用的,很多复杂的进行词法分析,结果还是存在很多问题。后来只好自己想办法了。比较了一下Java正则表达式与通配符之间的差别,很简单的进行了一下转化就行了。此外要注意String的replace和replaceAll的用法的含义,不要搞错了。啥也不讲了,有程序为证。

 1    //字符串匹配例子
 2
 3      String s = "*txt.*";
 4      s = s.replace('.''#');
 5      s = s.replaceAll("#""\\\\.");
 6      s = s.replace('*''#');
 7      s = s.replaceAll("#"".*");
 8      s = s.replace('?''#');
 9      s = s.replaceAll("#"".?");
10      s = "^" + s + "$";
11    
12      System.out.println(s);
13      Pattern p = Pattern.compile(s);
14    
15      ArrayList list = new ArrayList();
16      list.add("aabc.txt");
17      list.add("sdfsdfaabc.txt.asdasd");
18      list.add("aabcd.txt");
19      list.add("aabcdtxt.sadf");
20      list.add("abc.txt");
21    
22      Matcher fMatcher = null;
23      String s1 = null;
24      int size = list.size();
25      for(int i=0;i<size;i++)
26      {
27        s1 = (String)list.get(i);
28        fMatcher = p.matcher(s1);
29        if(fMatcher.matches())
30        {
31          System.out.println(s1);
32        }

33      }

34
35

实用的模糊(通配符)文件查找程序

 1import java.io.File;
 2import java.util.regex.Matcher;
 3import java.util.regex.Pattern;
 4import java.util.ArrayList;
 5
 6/**
 7* <p>Title: FileService </p>
 8* <p>Description: 获取文件 </p>
 9* <p>Copyright: Copyright (c) 2007</p>
10* <p>Company: </p>
11@author not attributable
12@version 1.0
13*/

14public class FileService {
15   public FileService() {
16   }

17
18   /**
19    * 在本文件夹下查找
20    * @param s String 文件名
21    * @return File[] 找到的文件
22    */

23   public static File[] getFiles(String s)
24   {
25     return getFiles("./",s);
26   }

27  
28   /**
29    * 获取文件
30    * 可以根据正则表达式查找
31    * @param dir String 文件夹名称
32    * @param s String 查找文件名,可带*.?进行模糊查询
33    * @return File[] 找到的文件
34    */

35   public static File[] getFiles(String dir,String s) {
36     //开始的文件夹
37     File file = new File(dir);
38
39     s = s.replace('.''#');
40     s = s.replaceAll("#""\\\\.");
41     s = s.replace('*''#');
42     s = s.replaceAll("#"".*");
43     s = s.replace('?''#');
44     s = s.replaceAll("#"".?");
45     s = "^" + s + "$";
46
47     System.out.println(s);
48     Pattern p = Pattern.compile(s);
49     ArrayList list = filePattern(file, p);
50
51     File[] rtn = new File[list.size()];
52     list.toArray(rtn);
53     return rtn;
54   }

55
56   /**
57    * @param file File 起始文件夹
58    * @param p Pattern 匹配类型
59    * @return ArrayList 其文件夹下的文件夹
60    */

61
62   private static ArrayList filePattern(File file, Pattern p) {
63     if (file == null{
64       return null;
65     }

66     else if (file.isFile()) {
67       Matcher fMatcher = p.matcher(file.getName());
68       if (fMatcher.matches()) {
69         ArrayList list = new ArrayList();
70         list.add(file);
71         return list;
72       }

73     }

74     else if (file.isDirectory()) {
75       File[] files = file.listFiles();
76       if (files != null && files.length > 0{
77         ArrayList list = new ArrayList();
78         for (int i = 0; i < files.length; i++{
79           ArrayList rlist = filePattern(files[i], p);
80           if (rlist != null{
81             list.addAll(rlist);
82           }

83         }

84         return list;
85       }

86     }

87     return null;
88   }

89
90   /**
91    * 测试
92    * @param args String[]
93    */

94   public static void main(String[] args) {
95   }

96}

97