【发布时间】:2019-08-08 19:22:20
【问题描述】:
我正在尝试在读取 CSV 文件后删除第一行。代码工作正常,但它在重写时将“”添加到我的数据中。 例如:
- 在写入 csv 文件之前:100,COMRADE,CAMPBELL
-
写入 csv 文件后:"100","COMRADE","CAMPBELL"
这里是代码。
================================================ ==========================
public void deleteLineFromCsv() throws IOException {
List<PatientsTabData> list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(new File("src/main/resources/patients.csv")));
String line = reader.readLine();
while(line != null) {
String[] split = line.split(",");
list.add(new PatientsTabData().patientId(Integer.parseInt(split[0])).patName(split[1]).patLastName(split[2]));
line = reader.readLine();
}
list.remove(0);
CSVWriter writer = new CSVWriter(new FileWriter(new File("src/main/resources/patients.csv")));
List<String[]> newlist = list.stream().map(item -> new String[]
{String.valueOf(item.getPatientId()), item.getPatName(), item.getPatLastName()})
.collect(Collectors.toList());
writer.writeAll(newlist);
writer.close();
}
图书馆:
<dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.3</version>
</dependency>
【问题讨论】:
-
请添加csv writer的库名。
-
添加到问题中
-
如果您的要求真的只是:从文件中删除第一行,那么我不会在这里使用 csv 读取器/写入器。只需使用普通缓冲读取器逐行读取文件,并省略写入第一行。
-
@GhostCat 有什么例子吗?
-
请后退。我真的不明白你到底打算达到什么目的。我的意思是:您的代码的实际目的是什么?究竟发生了什么,预计会发生什么?哪些数据需要在文件中,以及在方法运行后“在内存中”?
标签: java unit-testing filereader filewriter csv-write-stream