mneri / csv

Tiny and Extremely Fast CSV Reader and Writer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mneri/csv

mneri/csv is a fast and easy-to-use library to read and write CSV files.

Codacy Badge Language grade: Java Total alerts

Motivation

The code of most of the parsers you can find online is bloated and complicated. I wanted make a parser that was brief, clean and easy to understand. The algorithm of CsvReader is 30 lines of code.

Performances

It is fast. My preliminary tests show that the speed of CsvReader is comparable to the speed of uniVocity, one of the fastest csv parsers. I submitted a pull request to their benchmark, yet to be approved.

Memory consumption is also low. You can run mneri/csv on uniVocity benchmark with a 1MB JVM (-Xmx1m).

Example

To read a CSV file you use CsvReader class.

CsvReaderFactory factory = new DefaultCsvReaderFactory();

try (CsvReader<Person> reader = factory.open(new File("people.csv"), new PersonDeserializer())) {
    while (reader.hasNext()) {
        doSomething(reader.next());
    }
}

Where PersonDeserializer is:

public class PersonDeserializer implements CsvDeserializer<Person> {
    @Override
    public Person deserialize(RecyclableCsvLine line) {
        Person person = new Person();
        person.setFirstName(line.getString(0));
        person.setLastName(line.getString(1));
        return person;
    }
}

Writing to a csv file is easy, too.

CsvWriterFactory factory = new DefaultCsvWriterFactory();

try (CsvWriter<Person> writer = factory.open(new File("people.csv"), new PersonSerializer())) {
    for (Person person : persons) {
        writer.put(person);
    }
}

Where PersonSerializer is:

public class PersonSerializer implements CsvSerializer<Person> {
    @Override
    public void serialize(Person person, List<String> out) {
        out.add(person.getFirstName());
        out.add(person.getLastName());
    }
}

About

Tiny and Extremely Fast CSV Reader and Writer

License:Apache License 2.0


Languages

Language:Java 100.0%