最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Java中讀取CSV文件的方式

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

CSV 代表逗號分隔值,是一種非常流行的文件類型。CSV文件用于存儲由逗號分隔的信息。文件的每一行都用于表示一個(gè)數(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 文件或逗號本身為值的文件。例如,考慮一個(gè) CSV 文件,其中第二列用于存儲標(biāo)點(diǎn)符號。

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

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

輸出

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

使用掃描程序類讀取 CSV 文件

我們還可以使用java.utilScanner類來讀取 CSV 文件。此方法與BufferedReader非常相似。我們將簡單地讀取文件的每一行,然后使用逗號作為分隔符將其拆分。然后我們可以將單個(gè)記錄存儲在列表列表中。

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是一個(gè)CSV文件解析庫,可以使從CSV文件讀取變得更加容易。CSVReader用作FileReader的包裝 .我們將使用CSVReaderreadNext()方法逐行讀取文件。它返回一個(gè)字符串?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文件,其中我們有一個(gè)值為逗號的單元格。如我們所見,逗號被CSVReader刪除 .甚至報(bào)價(jià)也被刪除,數(shù)據(jù)以更好的格式呈現(xiàn)。

Full Stop .
Comma ,
Exclamation !

總結(jié)

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

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

相關(guān)文章

最新評論

松桃| 芜湖县| 通化市| 泰宁县| 临海市| 远安县| 丰台区| 崇礼县| 双流县| 泸溪县| 苏尼特左旗| 尼勒克县| 琼中| 抚州市| 九龙县| 金湖县| 囊谦县| 原阳县| 泗洪县| 沙雅县| 吴忠市| 城步| 馆陶县| 海丰县| 陈巴尔虎旗| 石台县| 青河县| 娱乐| 和政县| 天全县| 新晃| 武川县| 乌什县| 扎赉特旗| 罗山县| 桑植县| 博湖县| 凌云县| 遵义县| 怀集县| 永昌县|