我正在使用流 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;
}
}
最佳答案
您的 split()
是正确的,但您在流中的 map()
似乎不正确,因为您收集了目录和文件。
所以您没有收集预期值:即 String
和 XXX_XXX
模式。
请注意,map()
不是为过滤而设计的,而是为转换而设计的。
使用 filter()
而不是并使用它来仅过滤文件:
List<String> list = paths.filter(Files::isRegularFile)
.map(p -> p.getFileName()
.toString())
.collect(Collectors.toList());
关于java - 使用 Java nio files walk() 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378999/