Java如何从路径字符串中获取文件名?含CSV路径示例求助
Java路径处理:获取文件名与通配符CSV文件匹配
1. 从普通路径字符串获取文件名
如果你的路径指向单个具体文件(比如/app/data/test/in/test.csv),有两种实用方式:
- 使用Java NIO的
PathAPI(推荐):
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
相关产品推荐
相关产品推荐

