java - 如何获取(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_”开头来读取我的文件?
你有什么建议吗?
提前致谢。
解决方案
路径带有流,因此您可以过滤文件列表:
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 不同。更改它以获取文件名作为字符串(通过文件)以验证其名称。
推荐阅读
- python - 通过单个定义的操作运行多个全局变量
- django - 请求-回复周期结束时是否会收集请求数据垃圾?
- php - 正则表达式未按预期工作(据我所知)
- python - SQLalechemy 查询返回对象而不是值
- android-studio - 从 AndroidStudio 和 gradle 任务运行测试的区别
- php - Doctrine - 父子查询结果关系
- html - 如何在其中集中元素
所以,我有这个代码
<div id="timer"> </div>
如何将其集中在 HTML5 中?我试过了,但据我所知,它对于 HTML5 来说已经过时了,我必须使用 CSS 有什么帮助吗?
- c# - 如何使服务应用程序每年在特定日期运行一次?
- jenkins - 如何在同一台机器但不同的端口上安装 Jenkins?
- docker - HelloWorld Apama Docker 应用程序