From 8c4317706908bfa6309cdf883e7138c8f3430c8b Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 2 Dec 2013 12:53:16 +0200 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20CsvReader=20=D1=81=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D1=8C=D1=8E=20=D1=80=D0=B5=D0=B0?= =?UTF-8?q?=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BE=D0=B1=D1=8B=D1=82=D0=B8=D1=8F=20=D1=87?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/lr5/CsvReader.java | 76 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/tse/lr5/CsvReader.java diff --git a/src/tse/lr5/CsvReader.java b/src/tse/lr5/CsvReader.java new file mode 100644 index 0000000..721cfd4 --- /dev/null +++ b/src/tse/lr5/CsvReader.java @@ -0,0 +1,76 @@ +package tse.lr5; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Чтение CSV файла. + * @author aNNiMON + * @param + */ +public class CsvReader { + + public interface ReaderHandler { + + void onStartRead(File file); + + T createObject(String[] params); + + void onFinishRead(); + } + + private final File file; + private ReaderHandler handler; + + public CsvReader(File file) { + this.file = file; + } + + public void setReaderHandler(ReaderHandler handler) { + this.handler = handler; + } + + public List readCsv() throws IOException { + return readCsv(true); + } + + public List readCsv(boolean skipHeaderLine) throws IOException { + return readCsv(skipHeaderLine, ","); + } + + public List readCsv(boolean skipHeaderLine, String separator) throws IOException { + if (handler == null) throw new RuntimeException("Не установлен ReaderHandler"); + + handler.onStartRead(file); + BufferedReader reader = new BufferedReader( + new InputStreamReader( new FileInputStream(file), "UTF-8" ) + ); + if (skipHeaderLine) { + reader.readLine(); + } + String line; + List list = new ArrayList<>(); + while ( (line = reader.readLine()) != null ) { + T obj = null; + try { + if (!line.isEmpty()) { + String[] params = line.split(separator); + obj = (T) handler.createObject(params); + } + } catch (RuntimeException ex) { + ex.printStackTrace(); + } + if (obj != null) list.add(obj); + } + reader.close(); + handler.onFinishRead(); + return list; + } + + +}