Introduktion til Apache Commons CSV

1. Oversigt

Apache Commons CSV-bibliotek har mange nyttige funktioner til oprettelse og læsning af CSV-filer.

I denne hurtige vejledning ser vi, hvordan du bruger dette bibliotek ved at vise et simpelt eksempel.

2. Maven-afhængighed

For at starte importerer vi den nyeste version af dette bibliotek ved hjælp af Maven:

 org.apache.commons commons-csv 1.4 

For at kontrollere den nyeste version af dette bibliotek - gå her.

3. Læsning af en CSV-fil

Overvej følgende CSV-fil kaldet book.csv, der indeholder attributterne for en bog:

forfatter, titel Dan Simmons, Hyperion Douglas Adams, The Hitchhiker's Guide to the Galaxy

Lad os se, hvordan vi kan læse det:

Kort AUTHOR_BOOK_MAP = nyt HashMap () {{put ("Dan Simmons", "Hyperion"); put ("Douglas Adams", "The Hitchhiker's Guide to the Galaxy"); }}); String [] HEADERS = {"author", "title"}; @Test offentlig ugyldighed givetCSVFile_whenRead_thenContentsAsExpected () kaster IOException {Reader i = ny FileReader ("book.csv"); Iterable poster = CSVFormat.DEFAULT .withHeader (HEADERS) .withFirstRecordAsHeader () .parse (in); for (CSVRecord-post: poster) {String author = record.get ("author"); String title = record.get ("title"); assertEquals (AUTHOR_BOOK_MAP.get (forfatter), titel); }}

Vi læser optegnelserne for en CSV-fil efter at have sprunget over den første linje, da det er overskriften.

Der er forskellige typer CSVFormat angive formatet på CSV-filen, som du eksempel kan se i næste afsnit.

4. Oprettelse af en CSV-fil

Lad os se, hvordan vi kan oprette den samme CSV-fil som ovenfor:

offentlig tomrum createCSVFile () smider IOException {FileWriter ud = ny FileWriter ("book_new.csv"); prøv (CSVPrinter printer = ny CSVPrinter (ud, CSVFormat.DEFAULT .withHeader (HEADERS))) {AUTHOR_BOOK_MAP.forEach ((forfatter, titel) -> {printer.printRecord (forfatter, titel);}); }}

Den nye CSV-fil oprettes med de relevante overskrifter, fordi vi har angivet dem i vores CSVFormat erklæring.

5. Overskrifter og læsekolonner

Der er forskellige måder at læse og skrive overskrifter på. På samme måde er der forskellige måder at læse kolonneværdier på.

Lad os gennemgå dem en efter en:

5.1. Adgang til kolonner efter indeks

Dette er den mest basale måde at læse kolonneværdier på. Dette kan bruges, når overskrifterne til CSV-filerne ikke kendes:

Læser i = ny FileReader ("book.csv"); Iterable poster = CSVFormat.DEFAULT.parse (in); for (CSVRecord record: records) {String columnOne = record.get (0); Streng columnTwo = record.get (1); }

5.2. Adgang til søjler med foruddefinerede overskrifter

Dette er en mere intuitiv måde at få adgang til kolonner i forhold til adgang med indekser:

Iterable poster = CSVFormat.DEFAULT .withHeader ("forfatter", "titel"). Parse (in); for (CSVRecord-post: poster) {String author = record.get ("author"); String title = record.get ("title"); }

5.3. Brug af Enums som overskrifter

Ved brug af Strenge for at få adgang til kolonneværdier kan være udsat for fejl. Brug af Enums i stedet for Strings gør koden mere standardiseret og lettere at forstå:

enum BookHeaders {author, title} Iterable records = CSVFormat.DEFAULT .withHeader (BookHeaders.class) .parse (in); for (CSVRecord record: records) {String author = record.get (BookHeaders.author); String title = record.get (BookHeaders.title); }

5.4. Spring over hovedlinjen

Normalt indeholder CSV-filer overskrifter i første linje. Derfor er det i de fleste tilfælde sikkert at springe det over og begynde at læse fra anden række.

Dette registrerer automatisk overskrifter med adgang til kolonneværdier:

Iterable poster = CSVFormat.DEFAULT .withFirstRowAsHeader (). Parse (in); for (CSVRecord record: records) {String author = record.get ("author"); String title = record.get ("title"); }

5.5. Oprettelse af en fil med overskrifter

På samme måde kan vi oprette en CSV-fil med den første linje, der indeholder overskrifterne:

FileWriter out = ny FileWriter ("book_new.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader ("forfatter", "titel"). Print (ud);

6. Konklusion

Vi præsenterede brugen af ​​Apache's Commons CSV-bibliotek gennem et simpelt eksempel. Du kan læse mere om biblioteket her.

Koden til denne artikel er tilgængelig på Github.


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