如何访问PrintWriter内部拆分的最后一个元素?

问题描述 投票:0回答:1

我正在尝试访问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);
    }
}
java stream printwriter
1个回答
0
投票

要访问拆分的最后一个元素,您可以将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
© www.soinside.com 2019 - 2024. All rights reserved.