You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:统计目录中以03_开头的文件数量(代码执行失败)

解决Java统计指定前缀文件数量的问题

嘿,我来帮你搞定这个问题~你之前的代码失效是因为Java的Paths和Files.list()不支持直接解析通配符*——它会把/03_*当作一个字面量的路径名,而你的目录里根本没有叫03_*的文件/文件夹,所以自然得不到正确结果。

下面给你两种可行的解决方案,都是Java标准库的原生方法:

方法一:用Files.walk配合流式过滤

这种方法适合需要复杂过滤逻辑的场景,比如除了前缀还要判断文件类型、后缀等:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class FileCounter {
    public static void main(String[] args) {
        String parentDir = "/usr/local/mod_in";
        try (Stream<Path> fileStream = Files.walk(Paths.get(parentDir), 1)) {
            // 1表示只遍历当前目录,不深入子文件夹
            long cntSales = fileStream
                    .filter(Files::isRegularFile) // 只统计普通文件,排除目录
                    .map(path -> path.getFileName().toString())
                    .filter(fileName -> fileName.startsWith("03_"))
                    .count();
            System.out.println(cntSales); // 这里会输出2
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方法二:用DirectoryStream直接匹配通配符

如果只是简单的前缀匹配,这种方法更简洁高效,它原生支持通配符模式:

import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileCounter {
    public static void main(String[] args) {
        String parentDir = "/usr/local/mod_in";
        Path dirPath = Paths.get(parentDir);
        long cntSales = 0;
        
        try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(dirPath, "03_*")) {
            for (Path file : dirStream) {
                // 可选:如果要排除目录,加上这个判断
                if (Files.isRegularFile(file)) {
                    cntSales++;
                }
            }
            System.out.println(cntSales); // 输出2
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

两种方法都能正确统计出你要的结果,你可以根据自己的需求选择~

内容的提问来源于stack exchange,提问作者abssab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:10:02