Java8如何读取一个大数据的csv文件,并取其前N个字段生成新文件
时间: 2023-10-08 08:05:28 浏览: 154
mapredeuce数据示例_大数据
Java 8可以使用Stream API和Lambda表达式来读取大数据的CSV文件并生成新文件。以下是一个示例代码,假设我们要读取一个名为“input.csv”的文件,并将其前5个字段写入一个新文件“output.csv”:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class CSVReader {
public static void main(String[] args) throws IOException {
// Specify the input file path
String inputFilePath = "input.csv";
// Specify the output file path
String outputFilePath = "output.csv";
// Specify the number of fields to be copied
int numFields = 5;
// Read the input file using BufferedReader and Stream API
try (Stream<String> lines = new BufferedReader(new FileReader(inputFilePath)).lines()) {
// Process each line of the input file
String output = lines
.map(line -> {
// Split the line by commas
String[] fields = line.split(",");
// Take the first numFields fields
String[] selectedFields = new String[numFields];
System.arraycopy(fields, 0, selectedFields, 0, numFields);
// Join the selected fields with commas
String selectedLine = String.join(",", selectedFields);
return selectedLine;
})
// Join the selected lines with line breaks
.collect(Collectors.joining(System.lineSeparator()));
// Write the output to the output file
try (FileWriter writer = new FileWriter(outputFilePath)) {
writer.write(output);
}
}
}
}
```
在上面的代码中,我们首先指定输入文件路径、输出文件路径和要复制的字段数。然后,我们使用BufferedReader和Stream API来读取输入文件的每一行,并对每一行进行处理。我们使用split方法将每一行分割为字段数组,然后使用System.arraycopy方法选择前numFields个字段。最后,我们使用join方法将选择的字段组合成一个新的行。我们使用Collectors.joining方法将所有选择的行连接起来,并使用System.lineSeparator方法作为分隔符。最后,我们使用FileWriter将输出写入输出文件。
阅读全文