我正在使用流API来读取文件我正在调用readFile()方法,而在第一个循环中迭代循环我正在获取路径值如何删除该路径值,因为我面临数组索引超出绑定的异常.
文件命名转换是“FileName_17072018”.
public class RemoveCVVFilesjob {
public static void main(String[] args) throws IOException {
List fileList;
fileList = readFile();
for (String str : fileList) {
String[] strArr = str.split("_");
System.out.println(strArr[1]);
}
}
private static List readFile() throws IOException {
try (Stream paths = Files.walk(Paths.get("D:\\Projects\\Wallet\\CVVFiles"))) {
List list = paths.map(path -> Files.isDirectory(path) ?
path.getFileName().toString() + '/' :
path.getFileName().toString()).collect(Collectors.toList()
);
return list;
}
}
解决方法:
您的split()是正确的,但是当您收集目录和文件时,流中的map()似乎不正确.
所以你没有收集预期的值:那是带有XXX_XXX模式的String.
请注意,map()不是为了过滤而是为了变换而设计的.
使用filter()代替并使用它来仅过滤文件:
List list = paths.filter(Files::isRegularFile)
.map(p -> p.getFileName()
.toString())
.collect(Collectors.toList());
标签:java,file,java-8,java-stream,list
来源: https://codeday.me/bug/20190622/1262143.html