Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.Reader;
- import java.util.HashMap;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- public class CSVReader<Stringbuilder> {
- BufferedReader reader;
- String delimiter;
- boolean hasHeader;
- String[]current;
- // nazwy kolumn w takiej kolejności, jak w pliku
- List<String> columnLabels = new ArrayList<>();
- // odwzorowanie: nazwa kolumny -> numer kolumny
- Map<String,Integer> columnLabelsToInt = new HashMap<>();
- /**
- *
- * @param filename - nazwa pliku
- * @param delimiter - separator pól
- * @param hasHeader - czy plik ma wiersz nagłówkowy
- */
- public CSVReader(String filename,String delimiter, boolean hasHeader) throws IOException {
- reader = new BufferedReader(new FileReader(filename));
- this.delimiter = delimiter;
- this.hasHeader = hasHeader;
- if(hasHeader)parseHeader();
- }
- public CSVReader(String filename, String delimiter) throws IOException {
- this(filename, delimiter, false);
- }
- public CSVReader(String filename) throws IOException {
- this(filename, ",", false);
- }
- public CSVReader(Reader reader, String delimiter, boolean hasHeader) throws IOException {
- this.reader = new BufferedReader(reader);
- this.delimiter = delimiter;
- this.hasHeader = hasHeader;
- if(hasHeader)parseHeader();
- }
- void parseHeader() throws IOException {
- // wczytaj wiersz
- String line = reader.readLine();
- if (line == null) {
- return;
- }
- // podziel na pola
- String[] header = line.split(delimiter);
- // przetwarzaj dane w wierszu
- for (int i = 0; i < header.length; i++) {
- columnLabels.add(header[i]);
- columnLabelsToInt.put(header[i], i);
- }
- }
- boolean next() throws IOException{
- String line = reader.readLine();
- if (line == null) {
- return false;
- }
- this.current = line.split(delimiter);
- return true;
- }
- List<String> getColumnLabels() {
- return columnLabels;
- }
- int getRecordLength() {
- return current.length;
- }
- boolean isMissing(int columnIndex){
- if (current[columnIndex] == "") return true;
- return false;
- }
- boolean isMissing(String columnLabel){
- if (current[columnLabelsToInt.get(columnLabel)] == "") return true;
- return false;
- }
- String get(int columnIndex){
- return current[columnIndex];
- }
- String get(String columnLabel){
- return current[columnLabelsToInt.get(columnLabel);
- }
- public static void main(String[] args) throws IOException {
- CSVReader reader = new CSVReader("with-header.csv",",",true);
- List<String> labels;
- labels = reader.getColumnLabels();
- for (String l : labels) System.out.println(l);
- while(reader.next()){
- //System.out.printf(Locale.Us,"%d %s %d",id, name, fare);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement