问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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
"应交税费-应交增值税"账本中应该怎么设置明细科目 本届奥运会女排冠军是哪个 女子排球冠军是哪个国家 巴黎奥运会女排冠军是哪国 奥运女排冠军是哪个国家 奥运会女排冠军是哪国 2024年奥运会女排冠军 电磁炉玻璃面板换下多少钱一个 电磁炉换个面板要多少钱一个 电磁炉面板要换多少钱 Java怎么指定文件里搜索关键字 JAVA程序的搜索和排序问题 java中怎么搜索一个字符串中的所有英文单词 JAVA 搜索目录下符合条件的文件 被永久封了怎么办? java 搜索引擎 被永久封号的话,就不可能找回来了么?还是有什么方法可以找回来? JAVA 动态搜索(查找) 在线等 如何查找java路径? 该已被永久限制是什么意思?还能好吗,还能恢复回来吗 用Java如何实现站内搜索? JAVA如何实现全局搜索 Java怎么在整个项目中搜索某一个词 java如何实现文件搜索功能 我的永久被封了,还能解开吗? 被永久封号了如何解开 被永久封了怎么办? 请教:为什么西瓜视频分享钮不好用? 请问vⅰⅴo手机中西瓜视频中设置中为何找不到分享权限,手机中设置中也找不到 西瓜视频怎么才能发给好友? java 查找某字符串 JAVA 搜索一个词,显示含此词的句子 关于java搜索引擎 JAVA实现BAIDU的搜索功能 java中怎么搜索一个字符串中的所有英文单词? JAVA查找 java中如何模糊查找 微博怎么更改支付宝绑定?以前的支付宝不用了 我的支付宝绑定了别人的微博,没办法绑定自己的微博,我这个手机号应该以前是他人用过的原因,有办法吗 家用空调是怎样运行和制冷的? 新浪微博绑定了淘宝和支付宝,但是我换了手机号,淘宝账号支付宝账号 家用空调要怎么选择?注意哪些细节? 我正打算微博绑定支付宝,绑定的时候显示支付宝已绑定其他账号。可能是因为我手机号以前是别人的。然后我 家用空调怎么选择?求推荐 微博钱包绑定的支付宝,然后支付宝换手机号了,微博钱包解绑不了 家用空调买海尔空调怎么样?这个牌子空调好不好用啊? 支付宝账号绑定了其他的微博账号。而微博账号密码也忘了,手机号也没了。怎么解绑? 如何挑选家用空调? 《唐人街探案》Q究竟是谁? 《唐探q》组织成员有哪些?