如何在 Java 中读取 CSV 文件?2024 年 10 月 23 日 | 阅读 7 分钟 CSV 代表逗号分隔值。它是一种简单的文件格式,用于以纯文本形式存储表格数据,例如电子表格或数据库。CSV 格式的文件可以导入和导出到以表格形式存储数据的程序(Microsoft Office 和 Excel)。CSV 文件使用分隔符来识别和分隔文件中的不同数据标记。当我们在原生格式不兼容的程序之间移动表格数据时,会使用 CSV 文件格式。CSV 文件的默认分隔符是逗号(,)。 CSV 文件用途CSV 文件经常用于在各种软件程序之间传输数据,例如数据库管理系统、Microsoft Excel 等电子表格程序以及编程语言。它们提供了一种简单的方法来表示人类可读格式的结构化数据。 分隔符CSV 文件包含多种分隔符,包括分号(;)、制表符(\t)和竖线(|)。默认分隔符是逗号(,)。这种灵活性有助于防止与可能包含逗号的数据发生冲突,并支持各种数据格式。 在 Java 中打印数组有以下几种方法
如何创建 CSV 文件?创建 CSV 文件有两种方法
使用 Microsoft ExcelMicrosoft Excel 是一款流行的电子表格程序,允许用户轻松地以表格形式创建和操作数据。以下是如何使用 Excel 创建 CSV 文件的方法: 步骤 1:打开 Excel:在您的计算机上启动 Microsoft Excel。 步骤 2:将以下数据写入文件 ![]() 步骤 3:现在,保存文件。将文件名提供为 CSVDemo,然后从保存类型菜单中选择 CSV(逗号分隔)。现在,单击“保存”按钮。 ![]() 使用记事本步骤 1:打开记事本。 步骤 2:在文件中写入一些用逗号(,)分隔的数据。例如: Vivek, Singh, 23, 9999999, Chandigarh 步骤 3:将文件保存为.csv 扩展名。 我们已创建以下文件。 ![]() Java Scanner 类Java Scanner 类提供了各种方法,我们可以通过这些方法读取 CSV 文件。Scanner 类提供了一个构造函数,该构造函数会扫描指定文件的值。它将数据分解为标记形式。它使用默认匹配空白字符的分隔符模式。然后使用 next() 方法将生成的标记转换为不同类型的值。 要使用 Scanner 类读取 CSV 文件,我们首先需要创建一个 Scanner 实例,并将文件对象作为参数传递给其构造函数。默认情况下,Scanner 使用空格作为分隔符,但我们可以指定自定义分隔符模式来处理 CSV 文件。 示例 输出 Shashank, Mishra, Auditor, 909090090, 45000, Moti Vihar Naveen, Singh, Accountant, 213344455, 12000, Shastri Nagar Mahesh, Nigam, Sr. Manager, 787878878, 30000, Ashok Nagar Manish, Gupta, Manager, 999988765, 20000, Saket Nagar 解释 使用 Scanner 对象,提供的 Java 代码读取了一个名为“demo.csv”的 CSV(逗号分隔值)文件。它利用 useDelimiter() 方法将分隔符模式设置为逗号(,)。接下来,它使用 while 循环遍历文件内容,使用 hasNext() 检查是否还有更多标记可用,并使用 next() 输出每个标记。为了释放系统资源,它会在最后关闭 Scanner 对象。 Java String.split() 方法Java String.split() 识别分隔符并将行拆分为标记。 Java 中的 split() 方法是 String 类的一部分,它用于根据指定的分隔符将字符串拆分为子字符串数组。以下是其工作原理的说明: 语法 该方法解析分隔的正则表达式。该方法返回通过围绕给定正则表达式的匹配项拆分此字符串而生成的字符串数组。 参数 regex:这是定义分隔符模式的正则表达式。字符串将在与此正则表达式匹配的地方被拆分。 返回值 通过围绕给定正则表达式的匹配项拆分原始字符串,生成一个字符串数组。 ReadCSVExample2.java 输出 Employee [First Name= Shashank, Last Name= Mishra, Designation= Auditor, Contact= 909090090, Salary= 45000, City= Moti Vihar] Employee [First Name= Naveen, Last Name=Singh, Designation= Accountant, Contact=213344455, Salary= 12000, City= Shastri Nagar] Employee [First Name= Mahesh, Last Name=Nigam, Designation= Sr. Manager, Contact=787878878, Salary= 30000, City= Ashok Nagar] Employee [First Name= Manish, Last Name=Gupta, Designation= Manager, Contact=999988765, Salary= 20000, City= Saket Nagar] 解释 此 Java 代码使用 BufferedReader 逐行读取名为“demo.csv”的 CSV 文件。它根据逗号将每一行拆分为独立的 值,从而表示人员详细信息。它将每个人的解析后的值(包括名字、姓氏、职位、联系方式、薪水和城市)格式化为一个准备好的字符串。为了捕获和发布读取文件时可能出现的任何 IOExceptions,已开发了异常处理。 使用 OpenCSV APIOpenCSV 是一个第三方 API,提供标准库来读取各种版本的 CSV 文件。该库对处理 CSV 文件提供了更好的控制。该库还可以读取 TDF(制表符分隔文件)文件格式。 OpenCSV API 的特点
使用 CSVReader 类读取 CSV 文件。该类提供了 CSVReader 类构造函数来解析 CSV 文件。 语法 参数 reader:CSV 源的读取器。 separator:用于分隔条目的分隔符。 在 eclipse 中读取 CSV 文件的步骤 步骤 1:创建一个名为 ReadCSVExample3 的类文件,并编写以下代码。 步骤 2:在项目中创建一个 lib 文件夹。 步骤 3:从以下位置下载 opecsv-3.8.jar https://repo1.maven.org/maven2/com/opencsv/opencsv/3.8/opencsv-3.8.jar 步骤 4:将 opencsv-3.8.jar 复制并粘贴到 lib 文件夹中。 步骤 5:现在,运行程序。 ReadCSVExample3.java 输出 Shashank Mishra Auditor 909090090 45000 Moti Vihar Naveen Singh Accountant 213344455 12000 Shastri Nagar Mahesh NigamSr. Manager 787878878 30000 Ashok Nagar Manish Gupta Manager 999988765 20000 Saket Nagar 解释 此 Java 代码使用内置的 Java IO 类从名为“demo.csv”的 CSV 文件读取数据。它设置了变量来存储文件路径、分隔符和文件的每一行。它在 try-with-resources 块中生成一个 BufferedReader 来读取文件,并以逗号作为分隔符逐行迭代,将其拆分为标记。在打印每个标记后,它会前进到下一行。为了处理读取文件时可能发生的任何 IO 异常,已实现异常处理。如果发生异常,将打印堆栈跟踪。 ReadCSVExample4.java 输出 Shashank; Mishra; Auditor; 909090090; 45000; Moti Vihar Naveen; Singh; Accountant; 213344455; 12000; Shastri Nagar Mahesh; Nigam; Sr. Manager; 787878878; 30000; Ashok Nagar Manish; Gupta; Manager; 999988765; 20000; Saket Nagar 结论最后,还有其他方法可以在 Java 中读取 CSV 文件。这些方法包括使用内置的 Java IO 类 BufferedReader 和 FileReader,使用 String.split() 进行分词,或者使用具有自定义分隔符模式的 Scanner 类。此外,OpenCSV 等第三方库提供了强大的功能来管理 CSV 处理任务。所选方法取决于多种因素,包括文件的复杂性、所需的性能和预期的功能。 下一个主题Java 教程 |
一个数字的超阶乘是连续数字从 1 到该数字的乘积,其中每个数字都以其幂次表示。数学上,H(p) = 1 ^ 1 × 2 ^ 2 × 3 ^ 3 × 4 ^ 4 × ...
阅读 4 分钟
分区相等子集和问题是算法中的一个重要问题,并且经常出现在算法面试中。此类问题中最简单的问题是判断一组正整数是否可以分成两个总和相等的组。该问题...
5 分钟阅读
在方法之间传递和返回对象是 Java 编程的基本功能,对于创建可靠的、模块化的程序至关重要。在本节中,我们将讨论 Java 中对象传递和返回,探索各种类型和方法,并提供完整的...
5 分钟阅读
在本节中,我们将讨论什么是费马数,并创建 Java 程序来检查给定数字是否是费马数。费马数程序经常在 Java 编码面试和学术界中出现。费马数 由 Pierre de...首次研究
阅读 3 分钟
在编程世界中,解决问题的能力至关重要。它们可以帮助开发人员应对复杂的场景并提出有效的解决方案。一个这样引人入胜的问题是“回旋镖数量”问题,它挑战程序员在一个数组中找到回旋镖安排的数量。在本文中,我们...
阅读 4 分钟
在本文中,我们将了解 Java 中的单例枚举。您将能够理解如何使用它、它的目的以及最重要的是它的优点和缺点。让我们来了解一下编程中的单例是什么。单例 单例类是一个...
阅读 4 分钟
Java 是一种面向对象的编程语言,用于设计和开发桌面和 Web 应用程序。我们可以在任何平台上运行 Java 代码,因此它是平台无关的。要编写任何编程语言的代码,我们需要一个文本编辑器...
7 分钟阅读
该问题的主要目标是确定不大于特定数字 n 的正整数的数量,这些正整数具有所有不重复的数字,这意味着数字在数字中最多出现一次。与 11345 不同,后者不是唯一数字,因为...
阅读 16 分钟
java.nio.charset 包含一个内置方法 averageBytesPerChar()。CharsetEncoder 返回为每个输入字符生成的平均字节数。对于给定的输入序列,启发式值用于确定所需的输出缓冲区大小……
阅读 2 分钟
? LinkedHashMap 类似于 Java 编程中的 HashMap,但它具有额外的功能。它维护着元素添加顺序的记录。标准的 HashMap 中的元素没有固定的顺序。为了记住插入的键的顺序,LinkedHashMap 采用...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India