我有一个问题,我有一个函数可以返回所有文件,List<String>其中有几行文件以.pomie 结尾,路径是C://poms/xx/interested-2.0.pom我怎么能得到只是interested因为 ie 这是pom我应该使用的名称split还是有更好的方法来有Java 8什么建议吗?public List<String> listFiles(String path, List<File> files) { File directory = new File(path); File[] fList = directory.listFiles(); if (fList != null) { for (File f : fList) { if (f != null && f.isFile()) { files.add(f); } else if (f.isDirectory()) { listFiles(f.getAbsolutePath(), files); } } } return files.stream() .filter(file -> file.toString().endsWith(".xml")) .map(File::toString) .collect(Collectors.toList());}
2 回答
慕慕森
TA贡献1856条经验 获得超17个赞
无需对原始代码进行太多更改,您可以这样做:
return files.stream().filter(file -> file.toString().endsWith(".xml")) .map(File::getName) .map(s -> s.split("-")[0]) .collect(Collectors.toList());
而不是获取文件的整个路径,只需获取文件的名称。
温温酱
TA贡献1752条经验 获得超4个赞
要仅获取文件名,您可以使用Path.getFileName:
String fileName = Paths.get(path).getFileName(); // interested-2.0.pom
String result = fileName.split("-")[0];
编辑:您也可以使用listFiles(FileFilter filter):
public List<String> listFiles(String path) {
File directory = new File(path);
File[] fList = directory.listFiles(p -> p.getName().endsWith(".xml"));
if (fList != null) {
return Arrays.stream(files)
.map(file -> file.getName().split("-")[0])
.collect(toList());
}
throw new RuntimeException("No files");
}
添加回答
举报
0/150
提交
取消