/** * 次のレコードの有無を返す。 * * @return */ public boolean next() { if (!iter.hasNext() && !EOF) { try { iter = readBuffer().iterator(); } catch (IOException ioe) { ioe.printStackTrace(); return false; } } if (iter.hasNext()) { CSVLineParser parser = (CSVLineParser) iter.next(); defaultString = parser.getDefaultString(); currentRow = new CSVRecordMap(); String[] cols = parser.getSeparatedValues(); for (int i = 0; i < cols.length; i++) currentRow.put(colmunName[i], cols[i]); currentRowNum++; return true; } else { defaultString = null; currentRow = null; return false; } }
private CSVLineParser readLine(BufferedReader br, CSVLineParser parser) throws IOException { String line = br.readLine(); readIndex++; if (line != null && !parser.appendString(line).isCorrectRecord()) { return readLine(br, parser.appendString(System.getProperty("line.separator"))); } return parser; }
/** * ファイルの先頭行よりタイトルを読み込みます * * @return * @throws IOException */ public CSVReader preLoadTitleRow() throws IOException { BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encode)); CSVLineParser parser = readLine(br, new CSVLineParser()); offset = readIndex; colmunName = parser.getSeparatedValues(); } finally { if (br != null) br.close(); } return this; }
private List readBuffer() throws IOException { List result = new LinkedList(); BufferedReader br = null; readIndex = 0; try { br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encode)); seekOffset(br); while (result.size() < readBuffer) { CSVLineParser record = readLine(br, new CSVLineParser()); if (EOF = record.isNull()) break; else result.add(record); } offset = readIndex; } finally { if (br != null) br.close(); } return result; }