在 Java 中读取 CSV 文件

这篇具有很好参考价值的文章主要介绍了在 Java 中读取 CSV 文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSV 代表逗号分隔值,是一种非常流行的文件类型。CSV文件用于存储由逗号分隔的信息。文件的每一行都用于表示一个数据记录。在本教程中,我们将学习如何读取 CSV 文件并将其内容复制到数组或列表中。在本教程中,我们将使用仅包含三条记录的简单 CSV 文件。该文件的内容如下所示。

Justin, 101, 9.1
Jessica, 102, 8.7
Clark, 103, 7.1

使用BufferedReader读取 CSV 文件

java.io包的BufferedReader类可用于读取基本 CSV 文件。我们将简单地使用readLine()方法读取文件的每一行。然后我们可以使用split()方法拆分行并将逗号作为分隔符传递。 

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
public class ReadingCSV
{
	public static void main(String[] args)
	{
		try
		{
			List< List<String> > data = new ArrayList<>();//list of lists to store data
			String file = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file path
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			
			//Reading until we run out of lines
			String line = br.readLine();
			while(line != null)
			{
				List<String> lineData = Arrays.asList(line.split(","));//splitting lines
				data.add(lineData);
				line = br.readLine();
			}
			
			//printing the fetched data
			for(List<String> list : data)
			{
				for(String str : list)
					System.out.print(str + " ");
				System.out.println();
			}
			br.close();
		}
		catch(Exception e)
		{
			System.out.print(e);
		}
	}
}
输出:
Justin 101 9.1
Jessica 102 8.7
Clark 103 7.1

请注意,我们不能使用此方法读取更复杂的 CSV 文件或逗号本身为值的文件。例如,考虑一个 CSV 文件,其中第二列用于存储标点符号。

Full Stop,"."
Comma,","
Exclamation,"!"

如果我们尝试读取此文件,则以下数据存储在列表中。我们可以看到文件的第二行没有存储任何值(逗号已被省略)。我们也不需要引号。

输出

Full Stop "."
Comma " "
Exclamation "!"

使用扫描程序类读取 CSV 文件

我们还可以使用java.utilScanner类来读取 CSV 文件。此方法与BufferedReader非常相似。我们将简单地读取文件的每一行,然后使用逗号作为分隔符将其拆分。然后我们可以将单个记录存储在列表列表中。

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Arrays;
public class ReadingCSV
{
	public static void main(String[] args)
	{
		try
		{
			List< List<String> > data = new ArrayList<>();//list of lists to store data
			String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file path
			File file = new File(filePath);
			Scanner s = new Scanner(file);			
			//Reading until we run out of lines
			while(s.hasNextLine())
			{
				List<String> lineData = Arrays.asList(s.nextLine().split(","));//splitting lines
				data.add(lineData);
			}			
			//printing the fetched data
			for(List<String> list : data)
			{
				for(String str : list)
					System.out.print(str + " ");
				System.out.println();
			}
			s.close();
		}
		catch(Exception e)
		{
			System.out.print(e);
		}
	}
}
输出:
Justin 101 9.1
Jessica 102 8.7
Clark 103 7.1

就像BufferedReader一样,Scanner类方法不能用于复杂的 CSV 文件。

使用 OpenCSV 库读取 CSV 文件

OpenCSV是一个CSV文件解析库,可以使从CSV文件读取变得更加容易。CSVReader用作FileReader的包装 .我们将使用CSVReaderreadNext()方法逐行读取文件。它返回一个字符串数组,我们不需要担心拆分行。 

import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import com.opencsv.CSVReader;
import java.util.Arrays;
public class ReadingCSV
{
	public static void main(String[] args)
	{
		try
		{
			List< List<String> > data = new ArrayList<>();//list of lists to store data
			String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file path
			FileReader fr = new FileReader(filePath);
			CSVReader reader = new CSVReader(fr);
			
			String[] lineData = reader.readNext();
			//Reading until we run out of lines
			while(lineData != null)
			{
				data.add(Arrays.asList(lineData));
				lineData = reader.readNext();
			}
			
			//printing the fetched data
			for(List<String> list : data)
			{
				for(String str : list)
					System.out.print(str + " ");
				System.out.println();
			}
			reader.close();
		}
		catch(Exception e)
		{
			System.out.print(e);
		}
	}
}
输出:
Justin 101 9.1
Jessica 102 8.7
Clark 103 7.1

让我们将上面的代码用于CSV文件,其中我们有一个值为逗号的单元格。如我们所见,逗号被CSVReader删除 .甚至报价也被删除,数据以更好的格式呈现。

Full Stop .
Comma ,
Exclamation !

总结

CSV 文件用于存储由逗号(或在某些情况下为分号)分隔的数据。CSV 文件的每一行代表一条记录。我们可以使用BufferedReader或Scanner轻松地从基本 CSV 文件中读取数据。但是在读取更复杂的 CSV 文件时,我们可能无法获得预期的结果。读取 CSV 文件的最简单方法是使用外部库,例如OpenCSV .文章来源地址https://www.toymoban.com/news/detail-416637.html

到了这里,关于在 Java 中读取 CSV 文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通过Java读取csv文件内容

    1、通过 FileReader(String fileName) 读取整个文件,并通过 BufferedReader(Reader in) 作为每行的缓冲; 2、在通过 readLine() 读取每行内容,通过空格作为分隔符,每行转为数组,并存在 ListString[] 列表中; 3、最后打印 csv文件中的内容。 csv 文件内容如下: 打印的代码如下: 输出的内容

    2024年02月15日
    浏览(28)
  • 在 Java 中读取 CSV 文件

    CSV 代表逗号分隔值,是一种非常流行的文件类型。CSV文件用于存储由逗号分隔的信息。文件的每一行都用于表示一个数据记录。在本教程中,我们将学习如何读取 CSV 文件并将其内容复制到数组或列表中。在本教程中,我们将使用仅包含三条记录的简单 CSV 文件。该文件的内

    2023年04月17日
    浏览(24)
  • java环境下读取CSV文件

    目录 一、CSV文件简介 1.1.CSV文件介绍 1.2.CSV文件特点  1.3. CSV文件规则 1.4.编者记录  二、CSVParser文件读取   2.1.POM文件----commons-csv作为三方类库  2.2.测试代码  2.3.优缺点 三、将CSV文件转化为Excel的xlsx文件 3.1.POM文件   3.2.测试代码  3.3.运行结果  3.4.优缺点 四、CsvReader文件

    2024年02月08日
    浏览(29)
  • Hive 导入csv文件,数据中包含逗号的问题

    今天 Hive 导入 csv 文件时,开始时建表语句如下: 然后导入 csv 文件,发现数据串列了,查看数据发现是因为数据中包含逗号的问题,因为 csv 文件列分隔符就为逗号,所以直接导入到表中会使数据串列。 查询资料发现是建表语句的问题,所以我们要需要在建表的时候指定列

    2024年02月11日
    浏览(34)
  • Hive学习:Hive导入字段带逗号和换行符的CSV文件

    比如上面这行数据,字段\\\"600,000,000,00\\\"带多个逗号,这个可以用hive中内置的语句来解决,使用OpenCSVSerde来解析CSV格式的数据,并指定了CSV文件中使用的分隔符、引号字符和转义字符 ‘separatorChar’ = ‘,’:指定CSV文件中使用的分隔符为逗号(,) ‘quoteChar’ = ‘\\\"’:指定CSV文件中

    2024年02月11日
    浏览(43)
  • 前端vue金额用逗号分隔

    template部分 js部分

    2024年02月19日
    浏览(29)
  • Mysql 行转列,把逗号分隔的字段拆分成多行

    源数据 变更后的数据 第一种 先执行下面的SQL,看不看能不能执行,如果有结果,代表数据库版本是可以的,可以看下面和自己表关联的SQL,如果不行用第二种。 示例SQL 和业务结合在一起使用 其核心在于 mysql.help_topic ,但是版本太低的数据库版本不支持,如果不支持,可以

    2024年02月02日
    浏览(33)
  • MySQL将以逗号分隔的数据分成多行,再合并为一行

    最近遇到个这样的问题,MySQL中的【影片表】中 [演员列] 的内容是用逗号分隔的多个id存储的(例:4356,9691,11337),然后需要把他换成id对应的演员名字(例:屈菁菁,王太利,肖央) 看起来很复杂,其实只要把问题拆分一下就会非常简单 分为三步 第一步:把逗号分隔的多个

    2024年02月11日
    浏览(30)
  • 表中签到ID格式是以逗号分隔,需将ID拆开并分成多条数据

    原有数据格式: 拆分后数据格式:    拆分SQL: select bc.资源名称,bc.资源ID,bc.签到时间,bc.签到人,bb.column_value 签到附件ID     from report_fir.V_kw_checksign_info bc,table(hbrmw6.split_string(bc.签到附件ID,\\\',\\\')) bb; HBRMW6.split_string函数创建: CREATE OR REPLACE FUNCTION HBRMW6.split_string(p_string IN VARCHAR2

    2024年02月13日
    浏览(46)
  • 读取CSV文件数据

    1.1 CSV文件: 纯文本文件,存储空间占用小,其内容一般默认用逗号分隔,可用记事本和EXCEL打开、编辑。 读取CSV文件内容可用pandas模块中的read_csv()函数。 1.2 read_csv()函数的语法(选取部分主要参数): pandas.read_csv(filepath_or_buffer,sep,header,names,index_col,usecols,nrows,encodi

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包