Bevezetés az Apache Commons CSV-be

1. Áttekintés

Az Apache Commons CSV könyvtár számos hasznos funkcióval rendelkezik a CSV fájlok létrehozásához és olvasásához.

Ebben a gyors bemutatóban megtudhatjuk, hogyan lehet ezt a könyvtárat használni egy egyszerű példa bemutatásával.

2. Maven-függőség

A kezdéshez a könyvtár legújabb verzióját importáljuk a Maven használatával:

 org.apache.commons commons-csv 1.4 

A könyvtár legfrissebb verziójának ellenőrzéséhez látogasson el ide.

3. CSV fájl olvasása

Vegyük fontolóra a következő könyv .csv nevű CSV fájlt, amely egy könyv attribútumait tartalmazza:

szerző, cím Dan Simmons, Hyperion Douglas Adams, A stoppos útmutató a galaxishoz

Lássuk, hogyan olvashatjuk el:

Térkép AUTHOR_BOOK_MAP = új HashMap () {{put ("Dan Simmons", "Hyperion"); put ("Douglas Adams", "A stoppos útmutató a galaxishoz"); }}); Karakterlánc [] HEADERS = {"szerző", "cím"}; @Test public void givenCSVFile_whenRead_thenContentsAsExpected () dobja az IOException {Reader-t = új FileReader ("book.csv"); Iterálható rekordok = CSVFormat.DEFAULT .withHeader (HEADERS) .withFirstRecordAsHeader () .parse (in); for (CSVRecord rekord: rekordok) {Karaktersorozat = rekord.get ("szerző"); Karakterlánc címe = rekord.get ("cím"); assertEquals (AUTHOR_BOOK_MAP.get (szerző), cím); }}

Egy CSV-fájl rekordjait olvassuk, miután kihagytuk az első sort, mivel ez a fejléc.

Különböző típusúak CSVFormat megadva a CSV fájl formátumát, amelynek példáját a következő bekezdésben láthatja.

4. CSV fájl létrehozása

Nézzük meg, hogyan hozhatjuk létre ugyanazt a CSV fájlt, mint fent:

public void createCSVFile () kidobja az IOException {FileWriter-t = new FileWriter ("book_new.csv"); próbáld (CSVPrinter nyomtató = új CSVPrinter (ki, CSVFormat.DEFAULT .withHeader (HEADERS))) {AUTHOR_BOOK_MAP.forEach ((szerző, cím) -> {printer.printRecord (szerző, cím);}); }}

Az új CSV-fájl a megfelelő fejlécekkel kerül létrehozásra, mert ezeket megadtuk a fájlban CSVFormat nyilatkozat.

5. Fejlécek és oszlopok olvasása

A fejlécek olvasása és írása különböző módon lehetséges. Hasonlóképpen az oszlopértékek olvasásának különböző módjai vannak.

Menjünk végig rajtuk egyenként:

5.1. Oszlopok elérése index szerint

Ez az oszlopértékek olvasásának legalapvetőbb módja. Ez akkor használható, ha a CSV-fájlok fejlécei nem ismertek:

Reader in = új FileReader ("book.csv"); Iterálható rekordok = CSVFormat.DEFAULT.parse (in); for (CSVRecord rekord: rekordok) {String columnOne = record.get (0); Karakterlánc oszlopTwo = record.get (1); }

5.2. Oszlopok elérése előre definiált fejlécekkel

Ez az oszlopok elérésének intuitívabb módja, összehasonlítva az indexekkel történő eléréssel:

Iterálható rekordok = CSVFormat.DEFAULT .withHeader ("szerző", "cím"). Elemzés (be); for (CSVRecord rekord: rekordok) {Karaktersorozat = rekord.get ("szerző"); Karakterlánc címe = rekord.get ("cím"); }

5.3. Enums használata fejlécként

Használata Húrok az oszlopértékek elérése hibára hajlamos lehet. A Strings helyett az Enums használata szabványosabbá és könnyebben érthetővé teszi a kódot:

enum BookHeaders {szerző, cím} Iterálható rekordok = CSVFormat.DEFAULT .withHeader (BookHeaders.class) .parse (in); for (CSVRecord rekord: rekordok) {Karaktersorozat = rekord.get (BookHeaders.author); Karakterlánc címe = record.get (BookHeaders.title); }

5.4. A fejléc átugrása

Általában a CSV fájlok fejléceket tartalmaznak az első sorban. Ezért a legtöbb esetben biztonságos kihagyni és a második sorból kezdeni az olvasást.

Ez automatikusan felismeri a fejlécek oszlopértékeinek elérését:

Iterálható rekordok = CSVFormat.DEFAULT .withFirstRowAsHeader (). Parse (in); for (CSVRecord rekord: rekordok) {Karaktersorozat = rekord.get ("szerző"); Karakterlánc címe = rekord.get ("cím"); }

5.5. Fájl létrehozása fejlécekkel

Hasonlóképpen létrehozhatunk egy CSV fájlt is, amelynek első sora tartalmazza a fejléceket:

FileWriter out = új FileWriter ("book_new.csv"); CSVPrinter nyomtató = CSVFormat.DEFAULT .withHeader ("szerző", "cím"). Nyomtatás (ki);

6. Következtetés

Egy egyszerű példán keresztül mutattuk be az Apache's Commons CSV könyvtár használatát. A könyvtárról itt olvashat bővebben.

A cikk kódja elérhető a Github oldalon.