首页 > 解决方案 > 如何获取(Paths.get)一个文件名以某个字符开头的文件?

问题描述

我在 java 8 项目中工作,我使用 Paths 类从特定位置读取一个文件,一切正常。这是我的代码:

String inputDir = "src/main/distribution/in";

String fileName = "my_file.txt";

Path inputFile = Paths.get(inputDir, fileName);

// reading file lines... is OK

现在我的问题是这个文件每天都会用以下格式更改,filename.txt_date 所以每天我只会找到一个名称如下的文件:my_file.txt_02082020

所以我的问题是我如何才能通过检查文件名是否以“my_file.txt_”开头来读取我的文件?

你有什么建议吗?

提前致谢。

标签: java

解决方案


路径带有流,因此您可以过滤文件列表:

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

String inputDir = "src/main/distribution/in";
String fileName = "my_file.txt";
Optional<Path> file=Files.list(Paths.get(inputDir))
    .filter(p->p.getFileName().toFile().getName().startsWith(fileName))
    .findFirst();
if(file.isPresent())
{
    Path foundFile=file.get();
    File asFile=foundFile.toFile();
    // business logic here
}

编辑:使用 findFirst 而不是 forEach 因为只有一个文件。

EDIT2:显然 Path.startsWith() 的工作方式与 String 不同。更改它以获取文件名作为字符串(通过文件)以验证其名称。


推荐阅读