java搜索文件的代码怎么写,返回文件的路径?求教

发布网友 发布时间:2022-04-23 03:17

我来回答

3个回答

热心网友 时间:2023-11-02 04:48

你是搜文件名,还是搜文件内容?要是搜文件内容可就麻烦了,有可能的话你看看Java的一个开源库Lucene。

要是简单的搜文件名包含的字符串,大致应该涉及到文件树的遍历算法,最多用一些简单的正则表达式来匹配文件名,一般用递归可以实现任意级目录树的搜索。

给你个简单的版本吧:

package test.tool;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class FindFile {
    private String fileName = "";
    private String dir = "";
    private Matcher m = null;
    private int count = 0;
    public FindFile() throws IOException {
        String f = FindFile.class.getResource("findfile.properties").getFile();
        BufferedReader read = new BufferedReader(new FileReader(f));
        dir = read.readLine().trim();
        fileName = read.readLine().trim();
        Pattern p = Pattern.compile(fileName);
        m = p.matcher("");
    }
    public void find() {
        File root = new File(dir);
        for (File f : root.listFiles()) {
            if (f.isDirectory()) {
                dir = f.getAbsolutePath();
                find();
            } else {
                m.reset(f.getName());
                if (m.find()) {
                    count++;
                    System.out.println(f.getAbsolutePath());
                }
            }
        }
    }
    public static void main(String[] args) {
        try {
            FindFile ff = new FindFile();
            ff.find();
            System.out.println("\n共找到文件数目:" + ff.count);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


里面用到的findfile.properties,举个例子:

F:\download
vod.*.exe


运行效果如下:

F:\download\firefox\vodplayer.exe
F:\download\ie\vodplayer.exe

共找到文件数目:2

追问谢谢

热心网友 时间:2023-11-02 04:49

使用递归
方法传递首次 查询文件路径以及待查询文件名两个参数;
用File.list方法获取文件夹以及文件,如果是文件则获取该文件的名字进行contains 待查询文件名,并打印文件名;如果是文件夹则继续调用本方法传递该文件夹路径以及待查询文件名。

热心网友 时间:2023-11-02 04:49

java.io.File这个类你可以去看下。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com