Úvod do Apache Commons CSV

1. Prehľad

Knižnica Apache Commons CSV má mnoho užitočných funkcií na vytváranie a čítanie súborov CSV.

V tomto rýchlom návode uvidíme, ako využiť túto knižnicu, a to uvedením jednoduchého príkladu.

2. Závislosť od Maven

Najskôr importujeme najnovšiu verziu tejto knižnice pomocou nástroja Maven:

 org.apache.commons commons-csv 1.4 

Najnovšiu verziu tejto knižnice nájdete tu.

3. Čítanie súboru CSV

Zvážte nasledujúci súbor CSV s názvom book.csv, ktorý obsahuje atribúty knihy:

autor, titul Dan Simmons, Hyperion Douglas Adams, Stopárov sprievodca galaxiou

Pozrime sa, ako to môžeme prečítať:

Mapa AUTHOR_BOOK_MAP = nová HashMap () {{put ("Dan Simmons", "Hyperion"); put („Douglas Adams“, „Stopárov sprievodca galaxiou“); }}); Reťazec [] HEADERS = {"autor", "názov"}; @ Test public void givenCSVFile_whenRead_thenContentsAsExected () vyvolá IOException {Reader in = nový FileReader ("book.csv"); Iterovateľné záznamy = CSVFormat.DEFAULT .withHeader (HEADERS) .withFirstRecordAsHeader () .parse (in); pre (záznam CSVRecord: záznamy) {String autor = record.get ("autor"); Názov reťazca = record.get ("názov"); assertEquals (AUTHOR_BOOK_MAP.get (autor), titul); }}

Čítame záznamy súboru CSV po preskočení prvého riadku, ktorý je hlavičkou.

Existujú rôzne typy CSVFormát s uvedením formátu súboru CSV, ktorého príklad môžete vidieť v nasledujúcom odseku.

4. Vytvorenie súboru CSV

Pozrime sa, ako môžeme vytvoriť rovnaký súbor CSV ako vyššie:

public void createCSVFile () vyhodí IOException {FileWriter out = new FileWriter ("book_new.csv"); try (CSVPrinter printer = new CSVPrinter (out, CSVFormat.DEFAULT .withHeader (HEADERS))) {AUTHOR_BOOK_MAP.forEach ((autor, titul) -> {printer.printRecord (autor, titul);}); }}

Nový súbor CSV bude vytvorený s príslušnými hlavičkami, pretože sme ich špecifikovali v našom CSVFormát vyhlásenie.

5. Hlavičky a stĺpce na čítanie

Existujú rôzne spôsoby čítania a zápisu hlavičiek. Podobne existujú rôzne spôsoby čítania hodnôt stĺpcov.

Prejdime si ich jeden po druhom:

5.1. Prístup k stĺpcom podľa indexu

Toto je najzákladnejší spôsob čítania hodnôt stĺpcov. Toto možno použiť, ak nie sú známe hlavičky súborov CSV:

Čítačka v = nový FileReader ("book.csv"); Iterovateľné záznamy = CSVFormat.DEFAULT.parse (in); pre (záznam CSVRecord: záznamy) {String columnOne = record.get (0); Reťazec columnTwo = record.get (1); }

5.2. Prístup k stĺpcom podľa preddefinovaných hlavičiek

Toto je intuitívnejší spôsob prístupu k stĺpcom v porovnaní s prístupom pomocou indexov:

Iterovateľné záznamy = CSVFormat.DEFAULT .withHeader ("autor", "názov"). Parse (v); pre (záznam CSVRecord: záznamy) {String autor = record.get ("autor"); Názov reťazca = record.get ("názov"); }

5.3. Používanie Enums ako hlavičiek

Použitím Struny pre prístup k hodnotám stĺpcov môže byť náchylný na chyby. Použitie Enums namiesto reťazcov spôsobí, že bude kód štandardizovanejší a zrozumiteľnejší:

enum BookHeaders {autor, titul} Iterovateľné záznamy = CSVFormat.DEFAULT .withHeader (BookHeaders.class) .parse (in); pre (záznam CSVRecord: záznamy) {autor reťazca = record.get (BookHeaders.author); Názov reťazca = record.get (BookHeaders.title); }

5.4. Preskočenie záhlavia

Súbory CSV zvyčajne obsahujú hlavičky v prvom riadku. Vo väčšine prípadov je preto bezpečné ho preskočiť a začať čítať od druhého riadku.

Týmto sa automaticky zistia hodnoty prístupu k hlavičkám:

Iterovateľné záznamy = CSVFormat.DEFAULT .withFirstRowAsHeader (). Parse (in); pre (záznam CSVRecord: záznamy) {String autor = record.get ("autor"); Názov reťazca = record.get ("názov"); }

5.5. Vytvorenie súboru s hlavičkami

Podobne môžeme vytvoriť súbor CSV s prvým riadkom obsahujúcim hlavičky:

FileWriter out = nový FileWriter ("book_new.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader ("autor", "titul"). Print (out);

6. Záver

Na jednoduchom príklade sme predstavili použitie knižnice Apache Commons CSV. Viac o knižnici sa dočítate tu.

Kód tohto článku je k dispozícii na stránkach Github.


$config[zx-auto] not found$config[zx-overlay] not found