<dependency>
<groupId>net.sourceforge.javacsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
package com.ctid.util;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import com.ctid.core.util.StringUtil;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
public class CSVUtil {
private static Logger LOGGER = Logger.getLogger(CSVUtil.class);
public static List<Object[]> read(String filePath, boolean header, String encoding) {
List<Object[]> resultList = new ArrayList<Object[]>();
try {
CsvReader csvReader = new CsvReader(filePath, ',', Charset.forName(StringUtil.isEmpty(encoding) ? "utf-8" : encoding));
if (header) {
csvReader.readHeaders();
}
while (csvReader.readRecord()) {
resultList.add(csvReader.getValues());
}
} catch (Exception e) {
LOGGER.error("读取文件失败" + e.getMessage());
}
return resultList;
}
public static List<Object[]> readByinputStream(InputStream inputStream) {
List<Object[]> resultList = new ArrayList<Object[]>();
try {
CsvReader csvReader = new CsvReader(inputStream, ',', Charset.forName("utf-8"));
csvReader.readHeaders();
while (csvReader.readRecord()) {
resultList.add(csvReader.getValues());
}
} catch (Exception e) {
LOGGER.error("读取文件失败" + e.getMessage());
}
return resultList;
}
public static boolean write(String filePath, List<String[]> contentList) {
boolean flag = false;
try {
CsvWriter csvWriter = new CsvWriter(filePath, ',', Charset.forName("utf-8"));
for (String[] content : contentList) {
csvWriter.writeRecord(content);
}
csvWriter.close();
flag = true;
} catch (IOException e) {
flag = false;
LOGGER.error("写入文件失败" + e.getMessage());
}
return flag;
}
public static boolean write(HttpServletResponse response, List<String[]> contentList) {
boolean flag = false;
try {
CsvWriter csvWriter = new CsvWriter(response.getOutputStream(), ',', Charset.forName("utf-8"));
for (String[] content : contentList) {
csvWriter.writeRecord(content);
}
csvWriter.close();
flag = true;
} catch (IOException e) {
flag = false;
LOGGER.error("写入文件失败" + e.getMessage());
}
return flag;
}
public static String bytes2HexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder();
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
System.out.println(" bytes2HexString = " + stringBuilder.toString().toUpperCase());
return stringBuilder.toString().toUpperCase();
}
public static boolean judgeIsCSV(FileInputStream is) {
try {
byte[] b = new byte[4];
is.read(b, 0, b.length);
return bytes2HexString(b).contains("5B75726C");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}