我有一個問題,我有一個函數可以返回所有文件,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
提交
取消
