iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >在 Java 中读取 CSV 文件
  • 470
分享到

在 Java 中读取 CSV 文件

java前端html 2023-09-06 18:09:22 470人浏览 泡泡鱼
摘要

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

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

Justin, 101, 9.1Jessica, 102, 8.7Clark, 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 > data = new ArrayList<>();//list of lists to store dataString file = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file pathFileReader fr = new FileReader(file);BufferedReader br = new BufferedReader(fr);//Reading until we run out of linesString line = br.readLine();while(line != null){List lineData = Arrays.asList(line.split(","));//splitting linesdata.add(lineData);line = br.readLine();}//printing the fetched datafor(List 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.1Jessica 102 8.7Clark 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 > data = new ArrayList<>();//list of lists to store dataString filePath = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file pathFile file = new File(filePath);Scanner s = new Scanner(file);//Reading until we run out of lineswhile(s.hasNextLine()){List lineData = Arrays.asList(s.nextLine().split(","));//splitting linesdata.add(lineData);}//printing the fetched datafor(List 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.1Jessica 102 8.7Clark 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 > data = new ArrayList<>();//list of lists to store dataString filePath = "C:\\Users\\Lenovo\\Desktop\\demo.csv";//file pathFileReader fr = new FileReader(filePath);CSVReader reader = new CSVReader(fr);String[] lineData = reader.readNext();//Reading until we run out of lineswhile(lineData != null){data.add(Arrays.asList(lineData));lineData = reader.readNext();}//printing the fetched datafor(List 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.1Jessica 102 8.7Clark 103 7.1

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

Full Stop .Comma ,Exclamation !

总结

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

来源地址:https://blog.csdn.net/allway2/article/details/129615547

--结束END--

本文标题: 在 Java 中读取 CSV 文件

本文链接: https://www.lsjlt.com/news/397353.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作