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

Java如何从路径字符串中获取文件名?含CSV路径示例求助

Java路径处理:获取文件名与通配符CSV文件匹配

1. 从普通路径字符串获取文件名

如果你的路径指向单个具体文件(比如/app/data/test/in/test.csv),有两种实用方式:

  • 使用Java NIO的Path API(推荐):
String filePath = "/app/data/test/in/test.csv";
Path path = Paths.get(filePath);
String fileName = path.getFileName().toString();
// 输出:test.csv
  • 使用旧的File类:
String filePath = "/app/data/test/in/test.csv";
File file = new File(filePath);
String fileName = file.getName();
// 输出:test.csv

2. 处理带通配符的CSV路径(获取实际文件名)

你当前的代码里filePath包含通配符*.csv,Paths.get()只会把*.csv当作普通文件名处理,所以得到的结果就是*.csv,这显然不符合需求。要获取目录下所有匹配的CSV文件名,需要用Files.newDirectoryStream()遍历目录并匹配文件:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;

public class CsvFileNameExtractor {
    public static void main(String[] args) {
        String filePath = "/app/data/test/in/*.csv";
        Path path = Paths.get(filePath);
        // 获取通配符所在的父目录
        Path parentDir = path.getParent();
        
        try {
            // 遍历目录下所有匹配*.csv规则的文件
            for (Path csvFile : Files.newDirectoryStream(parentDir, "*.csv")) {
                String fileName = csvFile.getFileName().toString();
                System.out.println("找到CSV文件:" + fileName);
                // 若只需第一个匹配文件,处理后添加break即可
                // break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

补充说明:

  • Files.newDirectoryStream(parentDir, "*.csv")会自动筛选目录下所有后缀为.csv的文件
  • 若目录下存在多个CSV文件,代码会遍历输出所有文件名;如果只需要第一个匹配项,在获取文件名后添加break终止循环即可
  • 必须处理IOException,覆盖目录不存在、无读取权限等异常场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:32:50