Java解析CSV文件並導出篩選過得數據
pom.xml引入jar包
<!--csv-->
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>4.4</version>
</dependency>
使用IO流解析,轉化數組形式
/**
* <b>將csv文件通過IO流解析,轉化數組形式的集合<b>
*
* @param fileName 文件(路徑+csv文件名)
*/
public static List<String[]> csv(String fileName) {
List<String[]> csvList = new ArrayList<String[]>();
if (null != fileName) {
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(fileName),"gbk");
CSVParser csvParser = new CSVParserBuilder().build();
CSVReader reader = new CSVReaderBuilder(is).withCSVParser(csvParser).build();
csvList = reader.readAll();
}catch (UnsupportedEncodingException e){
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
return csvList;
}
測試並解析需要的數據並導出到對應文件
public static void main(String[] args) throws IOException {
// 讀取的csv文件
List<String[]> csv = csv("F:/interCode/interCode.csv");
// 保存數據的文件
File file = new File("F:/interCode/interCode.txt");
if (file.exists()) {
file.mkdirs();
}
FileOutputStream outputStream = null;
for (String[] strings : csv) {
String trim = strings[0].trim();
// 業務處理邏輯
String s = encodeBase(trim);
if (!s.equals("傳遞參數不完整!")) {
outputStream = new FileOutputStream(file,true);
byte[] bytes = s.getBytes();
// 寫入數據
outputStream.write(bytes);
// 換行
outputStream.write("\r\n".getBytes());
}
}
System.out.println("執行結束!");
// 關閉流
outputStream.close();
}
此處不做過多描述,C+V即用,根據自行情況稍加改動即可,代碼中都有相關注釋