第一次用Apache Commons CSV

1. 在Eclipse新建java项目CSVExample。

2… 添加csv文件:
在"\CSVexample\src"目录下新建一个csv文件,或者将别处的csv文件复制到这个目录下。
第一次用Apache Commons CSV_第1张图片
内容如下:
第一次用Apache Commons CSV_第2张图片

3. 下载Apache Commons CSV的源码并解压:
https://commons.apache.org/proper/commons-csv/download_csv.cgi
Binaries或Source,哪个都行。我两个都下了。
第一次用Apache Commons CSV_第3张图片

4. 将org.apache.commons.csv包添加到项目(两种方式):
第一种:
将"\commons-csv-1.4-src\src\main\java"目录下的org目录复制到CSVExample项目的src目录下,并刷新CSVExample项目,可以看到目录下面多了一个org.apache.commons.csv的包。
第一次用Apache Commons CSV_第4张图片

第二种:
引入第三方库
打开Eclipse --> 项目右击 --> Build Path --> Add External Archives --> 选择jar文件
第一次用Apache Commons CSV_第5张图片

5. 新建一个csvdemo包,在这个包里面写代码,练习使用apache。

读CSV

package csvdemo;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;

public class CSVReader {

	public static void main(String[] args) {
		try {
			Reader in=new FileReader("C:\\Users\\Liao\\workspace\\CSVexample\\src\\foods.csv");
			Iterable records=CSVFormat.EXCEL.withHeader().parse(in);
			for(CSVRecord record:records){
				System.out.print(record.get("Name") + " ");
				System.out.print(record.get("Favorite Color") + " ");
				System.out.println(record.get("Favorite Food"));
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

如果没有header:

public class CSVReader {

	public static void main(String[] args) {
		try {
			Reader in=new FileReader("C:\\Users\\Liao\\workspace\\CSVexample\\src\\foods.csv");
			Iterable records=CSVFormat.EXCEL.parse(in);
			for(CSVRecord record:records){
				System.out.print(record.get(0) + " ");
				System.out.print(record.get(1) + " ");
				System.out.println(record.get(2));
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

写CSV:

package csvdemo;

import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;

public class CSVWriter {

	public static void main(String[] args) {
		final String[] FILE_HEADER={"ID","Name","Score"};
		final String FILE_NAME="student.csv";
		
		//创建学生对象
		Student student1=new Student("7601", "Abby", 113);
		Student student2=new Student("7301", "Sam", 121);
		Student student3=new Student("7101", "Yuuki", 130);
		Student student4=new Student("7302", "Jay", 100);
		Student student5=new Student("7500", "Zoe", 98);
		//添加到一个list里面
		List students = new ArrayList<>();
		students.add(student1);
		students.add(student2);
		students.add(student3);
		students.add(student4);
		students.add(student5);
		
		FileWriter fileWriter=null;
		CSVPrinter csvPrinter=null;
		CSVFormat csvFormat=CSVFormat.DEFAULT.withHeader(FILE_HEADER);
		
		try {
			fileWriter=new FileWriter(FILE_NAME);
			csvPrinter=new CSVPrinter(fileWriter, csvFormat);
			
			for(Student student:students){
				List record=new ArrayList<>();
				record.add(student.getId());
				record.add(student.getName());
				record.add(String.valueOf(student.getScore()));
				csvPrinter.printRecord(record);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try{
				fileWriter.flush();
				fileWriter.close();
				csvPrinter.close();
			}catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

}

class Student{
	private String id;
	private String name;
	private int score;
	
	public Student(String id, String name, int score) {
		super();
		this.id = id;
		this.name = name;
		this.score = score;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}
	
}

写完后,效果如下:
第一次用Apache Commons CSV_第6张图片
在读csv的代码中,将文件路径改成"student.csv"即可读刚刚写好的csv。

Reader in=new FileReader("student.csv");

参考资料
https://examples.javacodegeeks.com/core-java/apache/commons/csv-commons/writeread-csv-files-with-apache-commons-csv-example/

你可能感兴趣的:(java学习笔记)