Java读取csv文件

2023-05-16

简介:总结用java通过读取csv文件方法,为用csv文件来做数据驱动测试提供解决方案

创建csv文件

用WPS表格或excel创建文件,填写数据,另存为选择CSV格式进行保存,如下图:
这里写图片描述

安装读取csv文件的jar包

jar包下载地址:http://sourceforge.net/projects/javacsv/files/
下载后解压,然后把javacsv.jar文件添加到java项目的构建路径
这里写图片描述

编写读取csv文件的java类

ReadCsvFile.java

import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;

import com.csvreader.CsvReader;

/*
 *包名:com.kdzwy.cases
 *作者:Adien_cui
 *时间:2017-9-25  下午4:36:29
 *描述:读取csv文件
 **/
public class ReadCsvFile {
    public static void readCsvFile(String filePath){
        try {
            ArrayList<String[]> csvList = new ArrayList<String[]>(); 
            CsvReader reader = new CsvReader(filePath,',',Charset.forName("GBK"));
//          reader.readHeaders(); //跳过表头,不跳可以注释掉

            while(reader.readRecord()){
                csvList.add(reader.getValues()); //按行读取,并把每一行的数据添加到list集合
            }
            reader.close();
            System.out.println("读取的行数:"+csvList.size());

            for(int row=0;row<csvList.size();row++){
                System.out.println("-----------------");
                //打印每一行的数据
                System.out.print(csvList.get(row)[0]+",");
                System.out.print(csvList.get(row)[1]+",");
                System.out.print(csvList.get(row)[2]+",");
                System.out.println(csvList.get(row)[3]+",");
                //如果第一列(即姓名列)包含lisa,则打印出lisa的年龄
                if(csvList.get(row)[0].equals("lisa")){  
                    System.out.println("lisa的年龄为:"+csvList.get(row)[2]);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String filePath = "F:\\data.csv";
        readCsvFile(filePath);
    }
}

运行结果如下:

这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java读取csv文件 的相关文章

  • Gson.toString() 给出错误“IllegalArgumentException:多个名为 mPaint 的 JSON 字段”

    我想将自定义对象转换为字符串并保存在 SharedPreferences 中 这是我的最终目标 我尝试了下面的行但失败了 String matchString gson toJson userMatches Logcat 10 11 15
  • 如何在 Groovy 中的 JSON Converter 方法中保留字母大小写?

    我正在尝试将 groovy 对象解析为 JSON 属性名称不遵循正确的驼峰式大小写形式 class Client String Name Date Birthdate 当我使用这个时 Client client new Client Nam
  • @NotNull.List 的目的

    当我查看标准时限制条件 http docs oracle com javaee 6 api javax validation constraints package summary html在 Bean Validation API JSR
  • PrintStream是有缓冲的,但是flush不会降低性能,而BufferedOutputStream会加速性能

    我预计由于 PrintStream 是缓冲的 通过在每次 print 之后添加刷新操作 速度性能应该会显着降低 但事实并非如此 如下面的代码片段所示 此外 将 PrintStream 包裹在 BufferedOutputStream 周围可
  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 如何连接hibernate和DB2

    我正在运行一个使用 struts 和 hibernate 的应用程序 我目前正在使用 Derby 数据库 现在我必须转向 DB2 数据库 请告诉我 我必须做什么配置 休眠配置文件 我必须设置任何类路径吗 多变的 我知道 DB2 有两个 ja
  • 在 JSON 对象中强制执行非空字段

    我们的 REST API 接收一些 JSON 对象输入 其中某些字段要求不为空 这些可以是字符串 整数 甚至可以是其他一些类实例作为参考 我们正在尝试找到一种方法来强制这些字段不为空 而不是在 API 中进行空检查的正确方法 当前的 if
  • 如何将 currentTimeMillis 转换为可读的日期格式? [复制]

    这个问题在这里已经有答案了 我想用currentTimeMillis两次 这样我就可以计算持续时间 但我也想以用户可读的格式显示时间和日期 我遇到了麻烦currentTimeMillis有利于计算 但我看不到内置函数可以转换为合适的时间或时
  • 比较和删除列表和数组java中不存在的元素

    我有一个String数组和一List
  • 将传入字符串的 unicode 表示形式转换为 UTF-8?

    我正在读取一些已经转换为 html 样式 代码的数据 我现在需要将其转换回 UTF 8 字符以供查看 不幸的是我无法使用浏览器查看该字符串 我读过有关 java 中的转换的内容 似乎如果你有一个 uxxxx 字符串 那么编译器会为你转换 然
  • 使用antlr4获取预处理器行并解析C代码

    我正在使用 Antlr4 来解析 C 代码 并使用以下语法来解析 链接到 C g4 https github com antlr grammars v4 blob master c C g4 上面的语法默认不提供任何解析规则来获取预处理器语
  • 如何在 Spring Boot 中创建 Apache POI Excel 视图配置

    当我想使用 Spring Boot Web 将数据导出到 Excel 时遇到问题 我使用 Thymeleaf 作为模板引擎 由 Spring Boot 自动配置 但是当我在附加配置中添加 XmlViewResolver 时 由 XmlVie
  • 日志记录在 Android 设备上实际上有什么作用?

    我一直在 Android 示例中看到这样的代码 try catch Exception e Log e Error e getMessage 什么是Log e实际上在物理设备上做什么 它进入系统日志 开发人员可以通过 SDK 工具访问该日志
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • 如何确保超类的子类方法的线程安全?

    我参加了一次面试 并被要求为以下要求设计一个课程 假设我有一个 A 类 它可以有任意数量的子类 即子类 类 A 有一个名为 doSomething 的方法 该方法是同步的 要求是 A 的所有子类都是强制性的重写 doSomething me
  • 如何正确使用Google Calendar API Events.Insert命令?

    所以我一直使用REST方法来调用Google的API 我需要将事件插入到我拥有 ID 的特定日历中 这是我发送的 POST 请求 地址 https www googleapis com calendar v3 calendars https
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器

随机推荐

  • Kotlin 基础知识汇总(知识与实践相结合)

    2个月的时间总算把 Kotlin 的基础知识写完了 xff0c 下面咱们看看具体内容 xff1a 学习 Kotlin 的必要性 Kotlin 初学者 为什么要学Kotlin Kotlin 初学者 打牢基础的重要性 运行环境 Kotlin 初
  • HashMap的产生与原理

    一 HashMap的诞生 1 1 数组 数组 xff1a 一片物理上连续的大小确定的储存空间 好处 xff1a 根据下标快速的查找和修改里面的内容 缺点 xff1a 大小确定 xff0c 无法修改 添加新的元素或者删除元素比较麻烦 数组的静
  • Android 数据存储(一)-文件存储

    目录 一 数据存储概念 二 应用程序专属文件存储 2 1 访问持久文件 2 2 将数据存储到文件 2 3 从文件中读取数据 2 4 查看文件列表 2 5 删除文件 三 缓存文件 cache目录下 3 1 创建缓存文件 3 2 删除文件 四
  • 回顾2021,展望2022 | 年终总结

    你付出多少努力 xff0c 就必有多少收获 一 回顾 2021 2021 年输出109篇文章 xff0c 收获 xff1a 博客专家认证 Android领域新星创作者认证 博客之星Top50 同时也在问答模块解决了部分小伙伴的问题 xff0
  • Android 数据存储(二)-SP VS DataStore VS MMKV

    一 SharedPreferences 不同于文件的存储方式 xff0c 如果要保存的键值集合相对较小 xff0c 则应使用SharedReferences API SharedReferences对象指向一个包含键值对的文件 xff0c
  • Jetpack DataStore 你总要了解一下吧?

    目录 一 DataStore 介绍 Preferences DataStore 和 Proto DataStore 二 Preferences DataStore 2 1 添加依赖 2 2 使用 Preferences DataStore
  • Android 数据存储(四)-Room

    目录 一 概述 1 1 描述 1 2 主要部件 二 创建 Room 2 1 添加依赖项 2 2 创建数据实体 2 2 1 设置 tableName or name 属性 2 2 2 设置主键 2 2 3 忽略字段 2 3 创建数据访问对象
  • Android 抛弃IMEI改用ANDROID_ID

    介绍 之前一直使用IMEI作为唯一标识符 xff0c 缺点就是需要权限 xff1a Android 10以前 xff0c 需要READ PHONE STATE权限 Android 10限制 xff0c 需要READ PRIVILEGED P
  • Android 单例模式必知必会

    目录 一 概念 1 1 单例类 1 2 优缺点 1 2 1 优点 1 2 2 缺点 二 创建单例模式的方法 2 1 饿汉式 2 2 懒汉式 2 2 1 懒汉式 非线程安全 2 2 2 懒汉式 线程安全 2 3 双重检验锁 2 4 静态内部类
  • 使用netinstall重置MIKROTIK RouterOS

    相信查看本文的读者手头应该有一台Mikrotik的路由产品 xff0c 本文中出现的RouterOS是指笔者拥有的一台家庭版路由器 非Routeros玩家可以忽略本文 下图就是笔者正在使用的一个Routeros路由器 我们在给Routero
  • BigDecimal 简单使用

    目录 为什么使用BigDecimal 解决方案 构造方法 类型转换 double 转 BigDecimal BigDecimal 转 String BigDecimal 转 double int long等 加减乘除取余 divide 舍入
  • Android Framework 启动流程必知必会

    课前预习 在了解启动流程之前先了解一下下面两个概念 1 子进程与父进程的区别 1 除了文件锁以外 其他的锁都会被继承 2 各自的进程ID和父进程ID不同 3 子进程的未决告警被清除 4 子进程的未决信号集设置为空集 2 什么是写时拷贝 co
  • ADB 操作命令及用法

    ADB 操作命令及用法 文章目录 ADB 操作命令及用法一 ADB是什么 xff1f 二 ADB有什么作用 xff1f 三 ADB命令语法单一设备 模拟器连接多个设备 模拟器连接4 1 基本命令4 1 1 查看adb的版本信息4 1 2 启
  • 研究生生涯的一些经验和感悟

    研究生生涯的一些经验和感悟 引言 写这篇博客前 xff0c 我不禁要感慨一下互联网分享所带来的好处 我这里讲的分享主要是指知识 技术和个人思想的分享 网络新闻媒体更多是传播一些资讯 xff0c 而这些资讯一般不涉及深入的技术 xff0c 深
  • PyCharm上传本地项目到GitLab - MacOS版

    登录GitLab 创建一个项目 填写项目名称 xff0c 选择显示级别 复制GitLab的这个项目地址 xff0c 后面会在PyCharm里面用到 PyCharm操作 从PyCharm打开本地项目 xff0c 然后创建本地代码仓库 xff0
  • 【Python】使用Scrapy 网络爬虫框架Demo

    安装 使用PyCharm安装 xff0c 进入到PyCharm gt Preferences gt Project Interpreter xff0c 点击加号 查询框输入 Scrapy xff0c 点击 Install Package 使
  • Docker+Selenium Grid运行UI自动化

    简介 使用Selenium Grid可以分布式运行UI自动化测试 xff0c 可以同时启动多个不同的浏览器 xff0c 也可以同时启动同一个浏览器的多个session 这里使用Docker Compose来同时启动不同浏览器的容器和Sele
  • python-生成HTMLTestRunner测试报告

    一 安装HTMLTestRunner HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展 xff0c 它可以生成 HTML的 测试报告 首先要下 HTMLTestRunner py 文件 xff0c
  • Jenkins发送测试报告邮件

    简介 总结怎么使用Jenkins执行自动化测试后发送测试报告邮件 一 系统设置 1 在Jenkins安装Email Extension Plugin插件 xff0c 如下图 xff1a 2 设置Extended E mail Notific
  • Java读取csv文件

    简介 xff1a 总结用java通过读取csv文件方法 xff0c 为用csv文件来做数据驱动测试提供解决方案 创建csv文件 用WPS表格或excel创建文件 xff0c 填写数据 xff0c 另存为选择CSV格式进行保存 xff0c 如