Java读写CSV格式的文件
/**
* 读取 CSV 文件
*
* @return
*/
public static LinkedList<CsvData> readCSV(String path) {
LinkedList<CsvData> list = new LinkedList<>();
BufferedReader reader = null;
try {
FileInputStream fis = new FileInputStream(path);
InputStreamReader isr = new InputStreamReader(fis, "GBK");
reader = new BufferedReader(isr);
String line;
while ((line = reader.readLine()) != null) {
String[] rows = line.split(",");
CsvData info = new CsvData();
info.setColumn1(rows.length > 0 ? rows[0] : null);
info.setColumn2(rows.length > 1 ? rows[1] : null);
info.setColumn3(rows.length > 2 ? rows[2] : null);
info.setColumn4(rows.length > 3 ? rows[3] : null);
info.setColumn5(rows.length > 4 ? rows[4] : null);
list.add(info);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (!list.isEmpty()) {
// 移除 CSV 首行标题
list.remove(0);
}
return list;
}
CsvData.java
public class CsvData {
private String column1;
private String column2;
private String column3;
private String column4;
private String column5;
// 生成 Getter 和 Setter
}
写入CSV文件
/**
* 写入 CSV 文件
*
* @return
*/
public static void writeCsv(List<CsvData> dataList, String filePath) {
CsvData header = new CsvData();
header.setColumn1("列1");
header.setColumn2("列2");
header.setColumn3("列3");
header.setColumn4("列4");
header.setColumn5("列5");
dataList.add(0, header);
try {
FileOutputStream fos = new FileOutputStream(new File(filePath));
OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
BufferedWriter bw = new BufferedWriter(osw);
for (CsvData data : dataList) {
String line = data.getColumn1() + ","
+ data.getColumn2() + ","
+ data.getColumn3() + ","
+ data.getColumn4() + ","
+ data.getColumn5();
bw.write(line + "\t\n");
}
bw.close();
osw.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}