Java opencsv 生成、读取、下载、删除CSV文件

  1. 利用opencsv包中的CSVWriter类,生成csv文件
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
import com.opencsv.CSVWriter;
 
public abstract class CsvFileWriter<T> {
 
	abstract List<String[]> getCsvContent();
	
	abstract String getCsvFileName();
	
	abstract String getUuid();
 
	public String execute() throws Exception {
		String result = "";
		String savePath = "D:/csv/" + "writer" + File.separator;
		
		try {
			//如果保存路径不存在,则自动创建
			File file = new File(savePath);
			if (!file.exists()) {
				file.mkdir();
			}
			String filePath = savePath + getUuid() + getCsvFileName();
			OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8");
		    CSVWriter writer = new CSVWriter(out);
			
		    writer.writeAll(getCsvContent());
		    writer.close();
		    result = filePath;
		} catch (Exception e) {
			e.printStackTrace();
		}
 
		return result;
	}
}

继承CSVFileWriter生成文件内容

import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.formula.functions.T;
 
import com.sun.tools.xjc.reader.xmlschema.bindinfo.BIConversion.User;
 
public class CsvWriter extends CsvFileWriter<T>{
	private long userId;
	private String uuid;
	private String fileName;
	
	public CsvWriter(long userId, String uuid, String fileName){//外部调用,将UserId,uuid(随机数),fileName传入
		this.userId = userId;
		this.uuid = uuid;
		this.fileName = fileName;
	}
 
	@Override
	List<String[]> getCsvContent() {
		List<String[]> allElements = new ArrayList<String[]>();
		//头文件
		String[] title = writeTitle();
		allElements.add(title);
//文件内容
		User user = (new UserDao()).findByID(userId);
		if (user != null) {
			String[] content = writeContent(user);
			allElements.add(content);
		}
		return allElements;
	}
 
	private String[] writeTitle() {
		String[] title = new String[]{
			"账户",
			"姓名",
			"电话",
			"地址",
			"性别"
		};
		return title;
	}
 
 
	private String[] writeContent(User user) {
		String[] content = new String[]{
			user.getAccount(),
			user.getName(),
			user.getTelephone(),
			user.getAddress(),
			user.getSex()
		};
		return content;
	}
 
	@Override
	String getCsvFileName() {
		return fileName;
	}
 
	@Override
	String getUuid() {
		return uuid;
	}
}

  1. 利用opencsv中CSVReader,读取csv文件
import java.io.File;import java.io.File;import java.io.File;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import com.opencsv.CSVReader;
public abstract class CsvFileReader {
	
	protected abstract String getFileName();
 
	protected abstract boolean readOneRow(String[] csvRow);
 
	public boolean execute() throws Exception {
		boolean result = false;
		
		try {
			File file = new File(getFileName());
 
			InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
			CSVReader csvReader = new CSVReader(isr);
 
			if (csvReader != null) {
				String[] csvRow = csvReader.readNext();	// row
 
				while ((csvRow = csvReader.readNext()) != null) {
					if(readOneRow(csvRow)){
						result = true;
					}
				}
				
				isr.close();
				csvReader.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
 
		return result;
	}
}`

继承CSVFileReader读取导入csv文件内容

import java.util.ArrayList;
import java.util.List;
 
import com.opensymphony.xwork2.util.ResolverUtil.Test;
 
public class CsvReader extends CsvFileReader{
 
	private List<Test> testList;
 
	private String fileName;
 
	public CsvReader(String fileName){
		testList = new ArrayList<Test>();
		this.fileName = fileName;
	}
	
	@Override
	protected boolean readOneRow(String[] csvRow) {
		boolean result = true;
 
		int i = 0;
		String account = csvRow[i++];
		String name = csvRow[i++];
		String tel = csvRow[i++];
		String address = csvRow[i++];
		String sex = csvRow[i++];
 
		User user = new User(account);
 
		user.setName(name);
		user.setTelephone(tel);
		user.setAddress(address);
		user.setSex(sex);
		
		testList.add(user);
		
		return result;
	}
 
	@Override
	protected String getFileName() {
		return fileName;
	}
	
	public List<Test> getTestList() {
		return testList;
	}
 
}

  1. 下载csv文件
public String downloadCSVFile() throws Exception {
	String fileName = "";
 
	try {
		fileName = "export.csv";
		String filePath = "D:/csv/" + "writer" + File.separator + uuid + fileName;
 
		File export = new File(filePath);
		FileInputStream in = null;
		OutputStream out = response.getOutputStream();
 
		byte[] buffer = new byte[1024];
		int len = 0;
		response.setContentType("text/csv;charset=UTF-8");
		response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
		response.setCharacterEncoding("UTF-8");
		in = new FileInputStream(export);
 
		while ((len = in.read(buffer)) > 0) {
			out.write(buffer, 0, len);
		}
 
		out.flush();
		in.close();
		out.close();
		// 删除原文件
		export.delete();
	} catch (Exception e) {
		e.printStackTrace();
	}
 
	return null;
}`
  1. 删除csv文件

    public static void deleteFiles(String filePath) {
	File file = new File(filePath);
 
	if (file.exists()) {
		File[] files = file.listFiles();
		for (int i = 0; i < files.length; i++) {
			if (files[i].isFile()) {
				files[i].delete();
			}
		}
	}
}
 
public static void deleteFile(String filePath, String fileName) {
 
	File file = new File(filePath);
 
	if (file.exists()) {
		File[] files = file.listFiles();
 
		for (int i = 0; i < files.length; i++) {
			if (files[i].isFile()) {
				if (files[i].getName().equals(fileName)) {
					files[i].delete();
					return;
				}
			}
		}
	}
}


作者:cat_book_milk
来源:CSDN
原文:https://blog.csdn.net/cat_book_milk/article/details/52953786

猜你喜欢

转载自blog.csdn.net/grq15203514615/article/details/86704010