Java解析CSV文件並導出數據


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即用,根據自行情況稍加改動即可,代碼中都有相關注釋

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM