亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)讀取CSV文件數(shù)據(jù)內(nèi)容(含逗號(hào)處理)

 更新時(shí)間:2025年07月04日 09:57:26   作者:Java皇帝  
這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)讀取CSV文件數(shù)據(jù)內(nèi)容,包含了逗號(hào)處理,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

最近在公司寫項(xiàng)目時(shí),有個(gè)讀取/修改csv格式文件數(shù)據(jù)的需求。

Java讀取csv文件時(shí)默認(rèn)是按照 ,[英文逗號(hào)]分割的,如果數(shù)據(jù)內(nèi)容不包含逗號(hào)直接整行讀取即可,但內(nèi)容包含了,[英文逗號(hào)] 讀取的并不是我想要的內(nèi)容

 經(jīng)過(guò)研究找到hutool工具下CsvUtil 可以用,操作如下

依賴

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.22</version>
        </dependency>

代碼 demo

CsvReader reader = CsvUtil.getReader();
//讀取方式1
CsvData data = reader.read(FileUtil.file("test.csv"));
//讀取方式2
CsvData data = reader.read(new InputStreamReader(inputStream, CharsetUtil.UTF_8));
//讀取方式3 轉(zhuǎn)為對(duì)象數(shù)據(jù)
 List<Bean> data = reader.read(ResourceUtil.getUtf8Reader("bean.csv"), Bean.class)

csv整行數(shù)據(jù)包括表頭
List<CsvRow> rows = data.getRows();
for (CsvRow csvRow : rows) {

//修改index=修改數(shù)據(jù)下標(biāo) value改的內(nèi)容
csvRow.set(index,value);

//讀取 整行數(shù)據(jù)
List<String> columnList = csvRow.getRawList();

}

//單列數(shù)據(jù)
for (CsvRow csvRow : rows) {
csvRow.get(rowNum)
}

個(gè)人封裝方法

基于csv列返回對(duì)應(yīng)對(duì)象數(shù)據(jù)

    public static <T> List<T> getFromZipTable(Sring file, String fileName, Class<T> clazz)
            throws Exception {
        List<T> result = reader.read(ResourceUtil.getUtf8Reader(file), clazz);
        inputStream.close();
        return CollectionUtils.isNotEmpty(result) ? result : new ArrayList<>(0);
    }

 獲取指定文件列內(nèi)容

    /**
     * 獲取指定文件列內(nèi)容
     */
    public static List<String> getColumnValueFromZip(InputStream inputStream, String fileName, String columnName)
            throws Exception {
        List<String> columnValue = new ArrayList<>();
        try {
            //從文件中讀取CSV數(shù)據(jù)
            CsvReader reader = CsvUtil.getReader();
            CsvData data = reader.read(new InputStreamReader(inputStream, CharsetUtil.UTF_8));
            List<CsvRow> rows = data.getRows();
            //獲條件索引
            int rowNum = -1;
            CsvRow headers = rows.get(0);
            for (int i = 0; i < headers.size(); i++) {
                if (headers.get(i).toString().equals(columnName)) {
                    rowNum = i;
                    break;
                }
            }
            if (rowNum == -1) {
                return columnValue;
            }
            //遍歷行
            boolean headerFlag = true;
            for (CsvRow csvRow : rows) {
                //跳過(guò)表頭
                if (headerFlag) {
                    headerFlag = false;
                    continue;
                }
                columnValue.add(csvRow.get(rowNum));
            }
        } finally {
            inputStream.close();
        }
        return columnValue;
    }

到此這篇關(guān)于Java實(shí)現(xiàn)讀取CSV文件數(shù)據(jù)內(nèi)容(含逗號(hào)處理)的文章就介紹到這了,更多相關(guān)Java讀取CSV內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論