Java8如何读取一个大数据的csv文件,并取其前N个字段生成新文件
时间: 2023-10-08 09:06:04 浏览: 40
Java8可以使用Stream API来读取大数据的csv文件,并使用Stream的操作来筛选出前N个字段。以下是一个简单的示例代码:
```java
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class CsvReader {
public static void main(String[] args) throws Exception {
String inputFilePath = "/path/to/input.csv";
String outputFilePath = "/path/to/output.csv";
int n = 5; // 取前5个字段
try (Stream<String> lines = Files.lines(Paths.get(inputFilePath), StandardCharsets.UTF_8)) {
String output = lines
.map(line -> line.split(","))
.map(fields -> {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n && i < fields.length; i++) {
sb.append(fields[i]).append(",");
}
return sb.toString().replaceAll(",$", ""); // 去掉最后一个逗号
})
.collect(Collectors.joining("\n"));
Files.write(Paths.get(outputFilePath), output.getBytes(StandardCharsets.UTF_8));
}
}
}
```
上面的代码使用了`Files.lines()`方法来读取文件的每一行,然后使用`map()`方法将每一行按逗号分隔成字段数组,再使用`map()`方法将前N个字段拼接成新的字符串,并使用`Collectors.joining()`方法将所有的新字符串拼接成一个字符串,最后使用`Files.write()`方法将字符串写入新文件。
需要注意的是,上面的代码假设输入文件中每一行都是完整的,即每行都有N个字段。如果输入文件中有缺失字段的行,则需要在拼接新字符串时加入判断。