根据用户输入从控制台按模式搜索文件-Java

时间:2018-06-25 21:14:34

标签: java regex file

我想问你:我如何制作一个程序,该程序制作一个简单的“类似过滤器”来通过用户输入来搜索文件。就像用户从控制台输入时一样:  * fileName.txt,它将搜索包含fileName的所有文件,并且星号表明它可以在“ fileName”之前包含一些单词。

以下是一些示例: 来自控制台的用户输入:

* text.txt->匹配所有包含text.txt的文件

fileName * .txt->匹配所有包含fileName的文件,并且可以在“ fileName”之后包含单词。 file * Name.txt->匹配包含文件file和Name的所有文件,它们之间可以有一些文字。

我知道它必须与正则表达式一起使用,但是我不知道我应该使用什么正则表达式。所以你能告诉我应该使用什么模式。 谢谢你!

这是我现在搜索文件的代码:

 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");
                }
            }

        }
}

1 个答案:

答案 0 :(得分:0)

尝试

(fileName)\w+.txt 用于fileName * .txt

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

\w+(text).txt for * text.txt