首页 > 解决方案 > 通过用户输入从控制台按模式搜索文件 - 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");
                }
            }

        }
}

标签: javaregexfile

解决方案


尝试

(fileName)\w+.txt 对于文件名*.txt

(file)\w+(Name).txt 对于文件*Name.txt

\w+(text).txt对于 *text.txt


推荐阅读