You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.6 KiB
44 lines
1.6 KiB
package java01;
|
|
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.util.List;
|
|
|
|
public class DataStorage {
|
|
|
|
public void writeJobsToCSV(List<Job> jobs, String fileName) {
|
|
try (FileWriter writer = new FileWriter(fileName)) {
|
|
// 写入表头
|
|
writer.write("职位标题,公司名称,薪资,地点,经验,学历,技能要求\n");
|
|
|
|
for (Job job : jobs) {
|
|
// 写入数据行,处理逗号和引号
|
|
writer.write(escapeCsvField(job.getTitle()) + ",");
|
|
writer.write(escapeCsvField(job.getCompany()) + ",");
|
|
writer.write(escapeCsvField(job.getSalary()) + ",");
|
|
writer.write(escapeCsvField(job.getLocation()) + ",");
|
|
writer.write(escapeCsvField(job.getExperience()) + ",");
|
|
writer.write(escapeCsvField(job.getEducation()) + ",");
|
|
writer.write(escapeCsvField(job.getSkills()) + "\n");
|
|
}
|
|
|
|
System.out.println("数据已成功写入CSV文件: " + fileName);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private String escapeCsvField(String field) {
|
|
if (field == null) {
|
|
return "";
|
|
}
|
|
// 如果字段包含逗号、引号或换行符,需要用引号包围
|
|
if (field.contains(",") || field.contains("\"") || field.contains("\n")) {
|
|
// 转义字段中的引号
|
|
field = field.replace("\"", "\"\"");
|
|
// 用引号包围字段
|
|
return "\"" + field + "\"";
|
|
}
|
|
return field;
|
|
}
|
|
}
|