Java實現(xiàn)讀取TXT和CSV文件內(nèi)容
最近在編寫一個通用可配置的實時ETL工具,即把通過Flink把Kafka的JSON 格式的數(shù)據(jù)解析后寫入關系型數(shù)據(jù)庫,業(yè)務要求新來一個JSON格式的業(yè)務數(shù)據(jù)后,通過在配置文件中讀取JSON和關系型數(shù)據(jù)庫中表的列映射關系,運行作業(yè)即可入庫;每一個JSON格式的API對應一個CSV的配置文件,因此需要讀取CSV的文件獲取配置,本文記錄讀取CSV和過程,順便記錄了讀取TXT的過程。
1.引入java
使用com.csvreader.CsvReader時需要在pom.xml中引用對應的jar包
<!--csv文件操作--> <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</artifactId> <version>2.0</version> </dependency>
2.實現(xiàn)代碼
package util; import com.csvreader.CsvReader; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.ArrayList; public class ReadFileTool { //讀取文件 public static String readTextFile(String jsonFile) { StringBuilder stringBuilder = new StringBuilder(); try { //01.FileInputStream(字節(jié)流) 實現(xiàn)了InputStream接口,用來讀取文件中的字節(jié)流,參數(shù)是文件或者文件路徑+文件名稱 FileInputStream fileInputStream = new FileInputStream(jsonFile); //02.將 fileInputStream(字節(jié)流) 流作為參數(shù),轉(zhuǎn)為InputStreamReader(字符流) InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8"); //03.將 字符流(參數(shù))轉(zhuǎn)為字符串流,帶緩沖的流讀取,默認緩沖區(qū)8k BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String tempString; while ((tempString = bufferedReader.readLine()) != null) { // 將字符串 添加到 stringBuilder中 stringBuilder.append(tempString); } bufferedReader.close(); } catch (Exception e) { e.printStackTrace(); } return stringBuilder.toString(); } //通過BufferedReader讀取CSV public static ArrayList readCsvFileFromJava(String csvFile,String encoding) { ArrayList<String[]> csvArrList=new ArrayList<String[]>(); StringBuilder stringBuilder = new StringBuilder(); try { //01.FileInputStream(字節(jié)流) 實現(xiàn)了InputStream接口,用來讀取文件中的字節(jié)流,參數(shù)是文件或者文件路徑+文件名稱 FileInputStream fileInputStream = new FileInputStream(csvFile); //02.將 fileInputStream(字節(jié)流) 流作為參數(shù),轉(zhuǎn)為InputStreamReader(字符流) InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, encoding); //03.將 字符流(參數(shù))轉(zhuǎn)為字符串流,帶緩沖的流讀取,默認緩沖區(qū)8k BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { // System.out.println(line); String item[] = line.split(",",-1);//CSV格式文件為逗號分隔符文件,這里根據(jù)逗號切分,-1表示獲取所有空值 csvArrList.add(item); } bufferedReader.close(); } catch (Exception e) { e.printStackTrace(); } return csvArrList; } //通過com.csvreader.CsvReader 讀取CSV public static ArrayList readCsvFileFromCsvReader(String csvFile,String encoding) { ArrayList<String[]> csvArrList=new ArrayList<String[]>(); try { CsvReader reader = new CsvReader(csvFile, ',', Charset.forName(encoding)); reader.readHeaders(); String[] headArray = reader.getHeaders();//獲取標題 for(String a:headArray){ System.out.print(a); } System.out.println(); System.out.println("---------"); while (reader.readRecord()) { // System.out.println(Arrays.asList(reader.getValues())); // 按行讀取,并把每一行的數(shù)據(jù)添加到list集合 csvArrList.add(reader.getValues()); } reader.close(); } catch (Exception e) { e.printStackTrace(); } return csvArrList; } //測試 public static void main(String[] args) { String userDir = System.getProperty("user.dir"); String fileDir = userDir + File.separator + "sourceFile" + File.separator; String cfgFileName = "dwd_op_event.csv"; String csvFullFileName = fileDir + cfgFileName; ArrayList<String []> csvArrList =readCsvFileFromCsvReader(csvFullFileName,"GBK"); } }
到此這篇關于Java實現(xiàn)讀取TXT和CSV文件內(nèi)容的文章就介紹到這了,更多相關Java讀取TXT CSV內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java高性能新一代構(gòu)建工具Maven-mvnd(實踐可行版)
這篇文章主要介紹了Java高性能新一代構(gòu)建工具Maven-mvnd(實踐可行版),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06SpringCloud OpenFeign基本介紹與實現(xiàn)示例
OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡通信的細節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡通信細節(jié)。所有遠程調(diào)用,都像調(diào)用本地方法一樣完成2023-02-02SpringApplicationRunListener監(jiān)聽器源碼詳解
這篇文章主要介紹了SpringApplicationRunListener監(jiān)聽器源碼詳解,springboot提供了兩個類SpringApplicationRunListeners、SpringApplicationRunListener(EventPublishingRunListener),spring框架還提供了一個ApplicationListener接口,需要的朋友可以參考下2023-11-11