我正在尝试访问PrintWriter的最后一个元素,但是由于使用了漂亮的嵌套Stream,因此遇到了麻烦。我使用“,”作为分隔符,因此将不胜感激。
if (!Files.exists(csvFile)) {
try (Stream<String> dataLines = Files.lines(dataFile);
PrintWriter writer = new PrintWriter(Files.newBufferedWriter(csvFile, StandardOpenOption.CREATE_NEW))) {
// Append the column headers
writer.append(APPENDED_ATTR_COLS.concat("\n"));
dataLines.map((line) -> line.split(DELIMITER))
.map((line) -> String.join(DELIMITER, line))
.forEach(writer::println);
System.out.println(dataLines);
}
}
要访问拆分的最后一个元素,您可以将map
操作更新为:
.map(line -> {
String[] split = line.split(DELIMITER);
return split[split.length - 1];
})
但是,在下一个映射操作中执行String.join
并没有任何意义。因此,您可能希望寻找类似的东西:
String stringToWrite = dataLines.map(line -> {
String[] split = line.split(DELIMITER);
return split[split.length - 1]; // last word of split
}).collect(Collectors.joining(DELIMITER)); // join all such last words here
writer.println(stringToWrite); // print the complete string