一、引入pom依赖<!-- CSV -->
<dependency>
<groupId>net.sourceforge.javaCsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
,下面我们就来聊聊关于java导入csv自动识别字符集?接下来我们就一起去了解一下吧!
java导入csv自动识别字符集
一、引入pom依赖
<!-- CSV -->
<dependency>
<groupId>net.sourceforge.javaCsv</groupId>
<artifactId>javacsv</artifactId>
<version>2.0</version>
</dependency>
二、解析CSV文件
import com.csvreader.CsvReader;
import org.springframework.web.multipart.MultipartFile;
import java.io.FileNotFoundexception;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
* cvs读取
*/
public class CsvReaderUtil1 {
private static final String PARSE_ERROR = "csv analysis exception {}";
public static List<String[]> processFile(MultipartFile file, int dataIndex)
throws IOException {
// 创建CSV读对象
return processInputStream(file.getInputStream(), dataIndex);
}
public static List<String[]> processPath(String path, int dataIndex)
throws FileNotFoundException {
// 创建CSV读对象
CsvReader csvReader = new CsvReader(path, ',', Charset.forName("gbk"));
return process(csvReader, dataIndex);
}
public static List<String[]> processInputStream(InputStream inputStream, int dataIndex) {
// 创建CSV读对象
CsvReader csvReader = new CsvReader(inputStream, ',', Charset.forName("gbk"));
return process(csvReader, dataIndex);
}
private static List<String[]> process(CsvReader csvReader, int dataIndex) {
//总数据
List<String[]> dataList = new ArrayList<>();
try {
while (csvReader.readRecord()) {
if (csvReader.getCurrentRecord() >= dataIndex) {
// 读取一行的单元格
String[] row = csvReader.getValues();
for (int i = 0; i < row.length; i ) {
if (isEmpty(row[i])) {
row[i] = "";
} else {
row[i] =
row[i].replaceAll(",", ",").replaceAll("\n", "");
}
}
dataList.add(row);
}
}
csvReader.close();
return dataList;
} catch (IOException e) {
e.printStackTrace();
}
return dataList;
}
public static boolean isEmpty(String str) {
return str == null || str.trim().length() == 0;
}
}
二、生成CSV文件
import com.base.infrastructure.log.LoggerManager;
import com.csvreader.CsvWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.List;
public class CsvWriterUtil {
public static void process(List<String[]> data, String filePath) {
LoggerManager.info(CsvWriterUtil.class, "wirte csv start......filepath:{}", filePath);
CsvWriter csvWriter = null;
try {
csvWriter = new CsvWriter(filePath, ',', Charset.forName("utf-8"));
for (String[] values : data) {
csvWriter.writeRecord(values);
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (csvWriter != null) {
csvWriter.close();
}
}
}
}