`

读取CSV文件的公共方法

阅读更多


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.IOUtils;

public class CsvParse {
    /**
     * 
     * 读取CSV文件得到数据列表 <br>
     * 〈功能详细描述〉
     * 
     * @param in:文件输入流
     * @param columnNames:字段名列表
     * @param startRow:从第几行开始读
     * @param splitCharacter:分隔符
     * @param encoding:文件的字符集编码
     * @return 数据列表
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static List<Map<String, Object>> parse(InputStream in, String[] columnNames, int startRow,
            String splitCharacter, String encoding) {
        // 读取到的CSV数据列表
        List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
        BufferedReader br = null;

        try {
            br = new BufferedReader(new InputStreamReader(in, encoding));

            String line = null;
            int lineNum = 0;
            while ((line = br.readLine()) != null) {
                lineNum++;
                if (lineNum < startRow) {
                    continue;
                }

                Map<String, Object> lineMap = new HashMap<String, Object>();
                String[] columns = line.split(splitCharacter);

                for (int i = 0; i < columns.length; i++) {
                    lineMap.put(columnNames[i], columns[i]);
                }

                dataList.add(lineMap);
            }
        } catch (Exception e) {
            //
        } finally {
            IOUtils.closeQuietly(br);
        }

        return dataList;
    }

    /**
     * 
     * 默认从第一行开始读,文件分隔符为逗号,文件字符集编码为UTF-8 <br>
     * 〈功能详细描述〉
     * 
     * @param in
     * @param columnNames
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static List<Map<String, Object>> parse(InputStream in, String[] columnNames) {
        return parse(in, columnNames, 1, ",", "UTF-8");
    }

    public static void main(String[] args) throws FileNotFoundException {
        FileInputStream is = new FileInputStream("D:/a.csv");
        String[] columnNames = { "userName", "password", "address", "age" };
        System.out.println(parse(is, columnNames, 1, ",", "UTF-8"));
    }
}

分享到:
评论

相关推荐

    易语言源码csv数据处理快速版

    易语言中处理CSV文件通常涉及读取文件、解析内容、处理数据以及可能的写入操作。在描述中提到的优化策略是针对循环中的性能提升,这主要包括两方面: 1. **简化重复语句**:在循环内部,避免执行相同的代码,可以将...

    Python-csvsql用SQL查询你的CSV文件

    `csvsql`是`csvkit`库的一部分,`csvkit`是一个用于读取、写入和操作CSV文件的命令行工具和Python库。通过`csvsql`,我们可以利用SQL(结构化查询语言)的强大功能来筛选、聚合、连接CSV数据,而无需编写复杂的...

    CsvHelper:用于帮助读取和写入CSV文件的库

    一个用于读取和写入CSV文件的库。 极其快速,灵活且易于使用。 支持读写自定义类对象。 安装 程序包管理器控制台 PM&gt; Install-Package CsvHelper .NET CLI控制台 &gt; dotnet add package CsvHelper 文献资料 建立文件...

    TXT_to_CSV_Implementation:该程序实现所需的逻辑以读取文本文件并将其转换为CSV

    *** load_and_convert是其他模块调用的公共接口*** read_csv.c实现了read_csv函数,该函数读取csv文件并将其内容逐行打印到屏幕上。 该代码分为2:read_csv.c(包含实现)read_csv.h(包含声明) *** read_csv是...

    Python实现将excel转换为txt公共方法.rar

    默认情况下,`to_csv()`会创建一个CSV文件,但如果我们不提供扩展名,它将默认为TXT格式。此外,我们可以设置`sep`参数来指定分隔符,通常使用制表符(\t)作为TXT文件的列分隔符。 ```python txt_file = 'path_to...

    QLCSVFile类

    QLCSVFile类的设计旨在帮助开发者更方便地在Cocos2dx项目中读取和解析CSV文件。 QLCSVFile.cpp和QLCSVFile.h是这个类的实现文件和头文件,分别包含了类的定义和函数实现。在C++中,头文件通常包含类的声明,而cpp...

    CVS to Entity Framework

    这些类通常包含公共属性,属性名与CSV文件的列名对应。这样做的好处是提高了代码的可维护性和可读性。 3. **附加属性**:为了增强实体类的功能,可以添加一些附加属性,例如`[NotMapped]`用于指示该属性不应在...

    FTP操作类.zip

    因此,类库可能包含了读取和写入CSV文件的方法,如`ReadCsv()`和`WriteCsv()`。 总的来说,这个FTP操作类提供了全面的FTP客户端功能,包括连接管理、文件上传下载以及CSV文件的支持。它通过封装复杂的FTP协议细节,...

    中国区县级人口普查数据

    例如,人口分布数据可以帮助政府规划公共服务设施,如学校、医院的布局;研究者可以借此研究人口老龄化、城镇化进程;商业机构则可以利用这些数据进行市场分析和选址决策。 总的来说,"中国区县级人口普查数据"结合...

    cvs c++ 解析类

    这个类不仅能够读取CSV文件,还能处理各种复杂情况,为在Linux和Windows环境中进行数据处理提供便利。在实际应用中,还可以根据具体需求扩展该类,比如添加写入CSV文件的功能,或者支持更复杂的CSV规范。

    CSCI4830-homework-0304:junit参数化和csv测试

    我们可以读取CSV文件,将其内容转化为测试参数,然后传递给参数化测试方法。 实现这一功能通常需要以下步骤: 1. 引入依赖:如Apache Commons CSV库,它可以方便地读取和解析CSV文件。 2. 编写CSV文件:创建一个...

    文件操作基类

    基类通常包含一些公共方法,供子类继承和重写,以实现特定的文件处理逻辑。 1. **文件的读写功能**: - **读取文件**:C#中的`System.IO`命名空间提供了`File`类,用于基本的文件操作。例如,`File.ReadAllText()`...

    流感数据预处理与数据重塑模拟csv数据

    - 使用“表输入”步骤读取CSV文件。 - 应用“过滤行”或“异常行”步骤来去除不符合条件的记录。 - 使用“替换/修改值”步骤处理缺失值或异常值。 - “类型转换”步骤可以改变数据类型。 - “联合”或“归并列”步骤...

    scala-csv-parser:CSV解析器库

    - **解析器对象/类**:这是库的核心,负责读取CSV数据并将其转换为内部表示。 - **数据结构**:库通常定义了自己的数据结构来存储CSV行和字段,这些结构可能具有额外的元数据,如列名、数据类型等。 - **API接口**:...

    旧金山共享单车数据-201908-baywheels-tripdata.csv.zip

    这个压缩包内的201908-baywheels-tripdata.csv文件,作为一个矢量数据集,提供了丰富的信息,有助于分析城市交通模式、骑行行为以及共享单车系统的运营效率。 首先,我们来深入了解一下CSV(Comma Separated Values...

    日本出生人口统计数据集 CSV(1899-2022 )

    CSV文件可以被各种统计软件、电子表格程序(如Microsoft Excel)以及编程语言(如Python和R)轻松读取。 描述中提到,数据在1944年至1946年之间有所缺失,这可能是因为第二次世界大战(简称EZ,通常指1939年至1945...

    学生成绩管理系统python

    用python编写的一个简单的成绩管理系统,基本功能和鲁棒性都还可以,可以防止部分非法输入;代码比较简单,可以按照自己的需求自行进行更改。

    2021 上海poi数据 csv

    1. CSV数据格式:CSV文件以逗号分隔值的形式存储数据,每一行代表一条记录,每列代表一个属性。这种格式通用且兼容性好,可以用Excel、Python、R、SQL等工具进行读取和处理。 2. 地理信息系统(GIS):GIS技术结合...

    PM2.5数据2019-07.csv.zip

    压缩包子文件的文件名称 "2019-07.csv" 表明解压后得到的CSV文件包含了2019年7月的详细数据。这种数据通常会包含日期、时间、地点、PM2.5浓度值,以及其他可能的气象参数。每行代表一个特定时间和地点的观测记录,列...

Global site tag (gtag.js) - Google Analytics