欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)讀取TXT和CSV文件內(nèi)容

 更新時間:2023年02月08日 09:03:11   作者:just-do-it-zzj  
這篇文章主要為大家詳細介紹了如何利用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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot中jsp配置tiles全過程

    springboot中jsp配置tiles全過程

    這篇文章主要介紹了springboot中jsp配置tiles全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 解決springboot整合druid遇到的坑

    解決springboot整合druid遇到的坑

    這篇文章主要介紹了解決springboot整合druid遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot源碼 PropertySource解析

    SpringBoot源碼 PropertySource解析

    PropertySource是spring中對于鍵值屬性的一種抽象,主要是name和sourcePropertyResolver是對PropertySource提供對外的統(tǒng)一數(shù)據(jù)處理,對于占位符的處理委托于PropertyPlaceholderHelper,對Springboot?源碼 PropertySource相關知識感興趣的朋友一起看看吧
    2023-01-01
  • Java高性能新一代構(gòu)建工具Maven-mvnd(實踐可行版)

    Java高性能新一代構(gòu)建工具Maven-mvnd(實踐可行版)

    這篇文章主要介紹了Java高性能新一代構(gòu)建工具Maven-mvnd(實踐可行版),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Java正確比較浮點數(shù)的方法

    Java正確比較浮點數(shù)的方法

    這篇文章主要介紹了Java正確比較浮點數(shù)的方法,幫助大家更好的利用Java比較浮點數(shù)數(shù)據(jù),感興趣的朋友可以了解下
    2020-11-11
  • SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡通信的細節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡通信細節(jié)。所有遠程調(diào)用,都像調(diào)用本地方法一樣完成
    2023-02-02
  • Java?NIO?Channel?使用詳情

    Java?NIO?Channel?使用詳情

    這篇文章主要介紹了Java?NIO?Channel?使用詳情,文章圍繞主題展開詳細內(nèi)容需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-04-04
  • springboot 場景啟動器使用解析

    springboot 場景啟動器使用解析

    這篇文章主要介紹了springboot 場景啟動器使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Springboot FatJa原理機制源碼解析

    Springboot FatJa原理機制源碼解析

    這篇文章主要為大家介紹了Springboot FatJa原理機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • SpringApplicationRunListener監(jiān)聽器源碼詳解

    SpringApplicationRunListener監(jiān)聽器源碼詳解

    這篇文章主要介紹了SpringApplicationRunListener監(jiān)聽器源碼詳解,springboot提供了兩個類SpringApplicationRunListeners、SpringApplicationRunListener(EventPublishingRunListener),spring框架還提供了一個ApplicationListener接口,需要的朋友可以參考下
    2023-11-11

最新評論