java - 通过用户输入从控制台按模式搜索文件 - java
问题描述
我想问你:我如何制作一个程序,它制作一个简单的“like filter”来通过用户输入搜索文件。就像用户从控制台输入:*fileName.txt 它搜索所有包含 fileName 的文件,星号表明它可以在“fileName”之前有一些单词。
以下是一些示例: 来自控制台的用户输入:
*text.txt -> 匹配所有包含 text.txt 的文件
fileName*.txt - > 匹配所有包含 fileName 的文件,并且它可以包含“fileName”之后的单词。file*Name.txt -> 匹配所有包含文件和名称的文件,它们之间可以有一些单词。
我知道它必须与正则表达式一起使用,但我不知道我应该使用什么正则表达式。那么你能告诉我应该使用什么模式吗?提前谢谢你!
这是我现在搜索文件的代码:
public void FilterFile(String directory, String fileToSearch)
{
File filePath = null;
if (directory != null)
{
File filePath = new File(directory); \\ reads Directory
FilenameFilter fnf = new FilenameFilter()
{
@Override
public boolean accept(File dir, String name)
{
if (name != null)
{
if(pattern.matcher(name).matches()) // pattern that should use for matching and filtering files by user input
{
return true;
}
return false;
}
};
File[] files = filePath.listFiles(fnf);
if (files != null)
{
for (File file : files)
{
System.out.println(file.getAbsolutePath() + " found");
}
}
}
}
解决方案
尝试
(fileName)\w+.txt
对于文件名*.txt
(file)\w+(Name).txt
对于文件*Name.txt
和
\w+(text).txt
对于 *text.txt
推荐阅读
- python - 条件/依赖函数参数 - Python
- c# - Entity Framework Core 5:在 sqlite 中将 Guid 存储为 blob(不是字符串)
- mysql - 如果第一个为真,MySQL 不会读取第二个 OR 条件
- tableau-api - 如何组合每个最大值、最小值、中值、平均值的所有计数结果
- python - 如果出现问题,保存 Lambda 的进度
- python - 将出现频率绘制为堆叠条形图中的字母高度
- python - 递归返回单链表的子表
- firebase - 如何在 Firebase Firestore 上的单个请求中从日期范围内获得最高分?
- numpy - 如何在子图中组合两个 DataFrame?
- google-cloud-platform - 授权对 GCP 的 REST API 调用