Tej*_*jal 6 java file list java-8 java-stream
我正在使用流API读取文件,readFile()同时在第一个循环中循环访问时正在调用方法。我正在获取路径值,如何删除该路径值,因为我正面临数组索引超出范围的异常。文件命名会话为“ FileName_17072018”。
public class RemoveCVVFilesjob {
public static void main(String[] args) throws IOException {
List<String> fileList;
fileList = readFile();
for (String str : fileList) {
String[] strArr = str.split("_");
System.out.println(strArr[1]);
}
}
private static List<String> readFile() throws IOException {
try (Stream<Path> paths = Files.walk(Paths.get("D:\\Projects\\Wallet\\CVVFiles"))) {
List<String> list = paths.map(path -> Files.isDirectory(path) ?
path.getFileName().toString() + '/' :
path.getFileName().toString()).collect(Collectors.toList()
);
return list;
}
}
Run Code Online (Sandbox Code Playgroud)
您split()是正确的,但同时map()收集目录和文件时,您的信息流中的您似乎不正确。
所以,你没有收集的预期值:即String用XXX_XXX模式。
请注意,map()它不是为了过滤而是为了变换而设计的。
使用filter()代替并使用它仅过滤文件:
List<String> list = paths.filter(Files::isRegularFile)
.map(p -> p.getFileName()
.toString())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)