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

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

 更新時(shí)間:2023年02月08日 09:03:11   作者:just-do-it-zzj  
這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言實(shí)現(xiàn)讀取TXT和CSV文件內(nèi)容的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

最近在編寫(xiě)一個(gè)通用可配置的實(shí)時(shí)ETL工具,即把通過(guò)Flink把Kafka的JSON 格式的數(shù)據(jù)解析后寫(xiě)入關(guān)系型數(shù)據(jù)庫(kù),業(yè)務(wù)要求新來(lái)一個(gè)JSON格式的業(yè)務(wù)數(shù)據(jù)后,通過(guò)在配置文件中讀取JSON和關(guān)系型數(shù)據(jù)庫(kù)中表的列映射關(guān)系,運(yùn)行作業(yè)即可入庫(kù);每一個(gè)JSON格式的API對(duì)應(yīng)一個(gè)CSV的配置文件,因此需要讀取CSV的文件獲取配置,本文記錄讀取CSV和過(guò)程,順便記錄了讀取TXT的過(guò)程。

1.引入java

使用com.csvreader.CsvReader時(shí)需要在pom.xml中引用對(duì)應(yīng)的jar包

<!--csv文件操作-->
        <dependency>
            <groupId>net.sourceforge.javacsv</groupId>
            <artifactId>javacsv</artifactId>
            <version>2.0</version>
        </dependency>

2.實(shí)現(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é)流) 實(shí)現(xiàn)了InputStream接口,用來(lái)讀取文件中的字節(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)為字符串流,帶緩沖的流讀取,默認(rè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();
    }
 
    //通過(guò)BufferedReader讀取CSV
    public static ArrayList readCsvFileFromJava(String csvFile,String encoding) {
 
        ArrayList<String[]> csvArrList=new ArrayList<String[]>();
        StringBuilder stringBuilder = new StringBuilder();
        try {
            //01.FileInputStream(字節(jié)流) 實(shí)現(xiàn)了InputStream接口,用來(lái)讀取文件中的字節(jié)流,參數(shù)是文件或者文件路徑+文件名稱
            FileInputStream fileInputStream = new FileInputStream(csvFile);
            //02.將 fileInputStream(字節(jié)流) 流作為參數(shù),轉(zhuǎn)為InputStreamReader(字符流)
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, encoding);
            //03.將 字符流(參數(shù))轉(zhuǎn)為字符串流,帶緩沖的流讀取,默認(rè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格式文件為逗號(hào)分隔符文件,這里根據(jù)逗號(hào)切分,-1表示獲取所有空值
                csvArrList.add(item);
            }
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return csvArrList;
    }
 
//通過(guò)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();//獲取標(biāo)題
            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;
    }
 
    //測(cè)試
    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");
 
    }
    
}

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

相關(guān)文章

  • SpringBoot使用hutool操作FTP的詳細(xì)過(guò)程

    SpringBoot使用hutool操作FTP的詳細(xì)過(guò)程

    在使用SpringBoot結(jié)合hutool操作FTP時(shí),遇到防火墻導(dǎo)致上傳文件大小為0kb的問(wèn)題,通過(guò)設(shè)置FTP為被動(dòng)模式解決,本文詳細(xì)解析了FTP的主動(dòng)模式和被動(dòng)模式的工作原理、安全性及適用場(chǎng)景,幫助理解FTP的連接方式和解決網(wǎng)絡(luò)限制問(wèn)題
    2024-09-09
  • 談?wù)勀憧赡懿⒉涣私獾膉ava枚舉

    談?wù)勀憧赡懿⒉涣私獾膉ava枚舉

    這篇文章主要給大家介紹了一些關(guān)于你可能并不了解的java枚舉的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 基于IO版的用戶登錄注冊(cè)實(shí)例(Java)

    基于IO版的用戶登錄注冊(cè)實(shí)例(Java)

    下面小編就為大家?guī)?lái)一篇基于IO版的用戶登錄注冊(cè)實(shí)例(Java)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能

    簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能

    Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能

    這篇文章主要介紹了Spring Boot項(xiàng)目中結(jié)合MyBatis實(shí)現(xiàn)MySQL的自動(dòng)主從切換功能,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • IDEA設(shè)置Tab選項(xiàng)卡快速的操作

    IDEA設(shè)置Tab選項(xiàng)卡快速的操作

    這篇文章主要介紹了IDEA設(shè)置Tab選項(xiàng)卡快速的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決

    這篇文章主要介紹了springboot新建項(xiàng)目pom.xml文件第一行報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中new與clone操作對(duì)象的比較方法舉例

    Java中new與clone操作對(duì)象的比較方法舉例

    這篇文章主要給大家介紹了關(guān)于Java中new與clone操作對(duì)象的比較方法,在java中對(duì)象的誕生是我們開(kāi)發(fā)人員new出來(lái)的,對(duì)象的使用也是我們開(kāi)發(fā)人員進(jìn)行操作的,需要的朋友可以參考下
    2024-07-07
  • springboot運(yùn)行到dokcer中 dockerfile的場(chǎng)景分析

    springboot運(yùn)行到dokcer中 dockerfile的場(chǎng)景分析

    這篇文章主要介紹了springboot運(yùn)行到dokcer中 dockerfile,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作示例

    Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用c:命名空間簡(jiǎn)化配置操作,結(jié)合實(shí)例形式詳細(xì)分析了Spring使用c:命名空間簡(jiǎn)化配置的相關(guān)接口與配置操作技巧,需要的朋友可以參考下
    2019-12-12

最新評(píng)論