亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在Java中讀取CSV文件的方式

 更新時間:2023年06月07日 11:50:14   作者:allway2  
在項目開發(fā)中我們經(jīng)常需要讀取csv的內(nèi)容的操作,讀取的邏輯并不復(fù)雜,下面這篇文章主要給大家介紹了關(guān)于在Java中讀取CSV文件的方式,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

CSV 代表逗號分隔值,是一種非常流行的文件類型。CSV文件用于存儲由逗號分隔的信息。文件的每一行都用于表示一個數(shù)據(jù)記錄。在本教程中,我們將學(xué)習(xí)如何讀取 CSV 文件并將其內(nèi)容復(fù)制到數(shù)組或列表中。在本教程中,我們將使用僅包含三條記錄的簡單 CSV 文件。該文件的內(nèi)容如下所示。

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

請注意,我們不能使用此方法讀取更復(fù)雜的 CSV 文件或逗號本身為值的文件。例如,考慮一個 CSV 文件,其中第二列用于存儲標(biāo)點符號。

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

如果我們嘗試讀取此文件,則以下數(shù)據(jù)存儲在列表中。我們可以看到文件的第二行沒有存儲任何值(逗號已被省略)。我們也不需要引號。

輸出

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類方法不能用于復(fù)雜的 CSV 文件。

使用 OpenCSV 庫讀取 CSV 文件

OpenCSV是一個CSV文件解析庫,可以使從CSV文件讀取變得更加容易。CSVReader用作FileReader的包裝 .我們將使用CSVReaderreadNext()方法逐行讀取文件。它返回一個字符串?dāng)?shù)組,我們不需要擔(dān)心拆分行。 

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刪除 .甚至報價也被刪除,數(shù)據(jù)以更好的格式呈現(xiàn)。

Full Stop .
Comma ,
Exclamation !

總結(jié)

CSV 文件用于存儲由逗號(或在某些情況下為分號)分隔的數(shù)據(jù)。CSV 文件的每一行代表一條記錄。我們可以使用BufferedReader或Scanner輕松地從基本 CSV 文件中讀取數(shù)據(jù)。但是在讀取更復(fù)雜的 CSV 文件時,我們可能無法獲得預(yù)期的結(jié)果。讀取 CSV 文件的最簡單方法是使用外部庫,例如OpenCSV .

到此這篇關(guān)于在Java中讀取CSV文件的文章就介紹到這了,更多相關(guān)Java讀取CSV文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java下載項目中靜態(tài)文件方式

    Java下載項目中靜態(tài)文件方式

    這篇文章主要介紹了Java下載項目中靜態(tài)文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java interceptor攔截器的方法

    Java interceptor攔截器的方法

    java里的攔截器是動態(tài)攔截Action調(diào)用的對象,它提供了一種機制可使開發(fā)者在一個Action執(zhí)行的先后執(zhí)行一段代碼,也能夠在一個Action,接下來通過本文給大家介紹Java interceptor攔截器的方法,感興趣的朋友一起看看吧
    2022-01-01
  • 如何將jdk10降版本到j(luò)dk1.8

    如何將jdk10降版本到j(luò)dk1.8

    這篇文章主要介紹了如何將jdk10降版本到j(luò)dk1.8問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • SpringBoot中使用 RabbitMQ的教程詳解

    SpringBoot中使用 RabbitMQ的教程詳解

    這篇文章主要介紹了SpringBoot中使用 RabbitMQ的教程詳解,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • springboot @Configuration和@Componment的區(qū)別及說明

    springboot @Configuration和@Componment的區(qū)別及說明

    這篇文章主要介紹了springboot @Configuration和@Componment的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 淺談MyBatis-plus入門使用

    淺談MyBatis-plus入門使用

    這幾天本人了解到了MyBatis-plus,一個 Mybatis 增強工具包.經(jīng)過一番研究,發(fā)現(xiàn)這玩意真的好用,不用寫任何 xml ,內(nèi)置通用的 Mapper,而且完全是面向?qū)ο缶幊?文檔給的示例代碼,跟之前用過的 sequelize (Node.js 的 ORM)非常像,因此本人也嘗試了一把, 需要的朋友可以參考下
    2021-05-05
  • SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實現(xiàn)

    SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實現(xiàn)

    這篇文章主要介紹了SpringCloud 2020-Ribbon負(fù)載均衡服務(wù)調(diào)用的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java 如何讀取Excel格式xls、xlsx數(shù)據(jù)工具類

    Java 如何讀取Excel格式xls、xlsx數(shù)據(jù)工具類

    這篇文章主要介紹了Java 如何讀取Excel格式xls、xlsx數(shù)據(jù)工具類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot項目中JDK動態(tài)代理和CGLIB動態(tài)代理的使用詳解

    SpringBoot項目中JDK動態(tài)代理和CGLIB動態(tài)代理的使用詳解

    JDK動態(tài)代理和CGLIB動態(tài)代理都是SpringBoot中實現(xiàn)AOP的重要技術(shù),JDK動態(tài)代理通過反射生成代理類,適用于目標(biāo)類實現(xiàn)了接口的場景,性能較好,易用性高,但必須實現(xiàn)接口且不能代理final方法,CGLIB動態(tài)代理通過生成子類實現(xiàn)代理
    2025-03-03
  • Java Volatile關(guān)鍵字你真的了解嗎

    Java Volatile關(guān)鍵字你真的了解嗎

    這篇文章主要為大家介紹了Java Volatile關(guān)鍵字,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評論