- 利用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;
}
}
- 利用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;
}
}
- 下载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;
}`
- 删除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