Revision 47506 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.csv/src/main/java/org/gvsig/fmap/dal/store/csv/simplereaders/CSVReaderSuperCSV.java
CSVReaderSuperCSV.java | ||
---|---|---|
1 | 1 |
package org.gvsig.fmap.dal.store.csv.simplereaders; |
2 | 2 |
|
3 |
import java.io.BufferedReader; |
|
3 | 4 |
import java.io.File; |
4 | 5 |
import java.io.IOException; |
5 | 6 |
import java.io.Reader; |
6 | 7 |
import java.util.List; |
8 |
import java.util.function.Function; |
|
7 | 9 |
import org.apache.commons.io.FilenameUtils; |
10 |
import org.apache.commons.io.input.CloseShieldReader; |
|
11 |
import org.apache.commons.lang3.StringUtils; |
|
8 | 12 |
import org.apache.commons.text.StringEscapeUtils; |
9 |
import org.apache.commons.lang3.StringUtils; |
|
10 | 13 |
import org.gvsig.fmap.dal.store.csv.CSVStoreParameters; |
11 | 14 |
import org.gvsig.fmap.dal.store.csv.virtualrows.RandomAccessFileIndex; |
12 | 15 |
import org.gvsig.fmap.dal.store.csv.virtualrows.RandomAccessFileReader; |
... | ... | |
79 | 82 |
if( data_file.length()< 10*1024*1024 ) { |
80 | 83 |
return null; |
81 | 84 |
} |
85 |
|
|
86 |
Function<BufferedReader, Integer> numberOfLinesInRecord = new Function<BufferedReader, Integer>() { |
|
87 |
@Override |
|
88 |
public Integer apply(BufferedReader breader) { |
|
89 |
CloseShieldReader theReader = CloseShieldReader.wrap(breader); |
|
90 |
CsvListReader parser = new CsvListReader(theReader, getCSVPreferences()); |
|
91 |
try { |
|
92 |
List<String> values = parser.read(); |
|
93 |
} catch (IOException ex) { |
|
94 |
return 1; |
|
95 |
} |
|
96 |
return parser.getLineNumber(); |
|
97 |
} |
|
98 |
}; |
|
82 | 99 |
|
83 | 100 |
String charset = CSVStoreParameters.getCharset(params); |
84 | 101 |
File index_file = getIndexFile(data_file); |
85 | 102 |
|
86 | 103 |
theReader = new RandomAccessFileReader(data_file, charset); |
87 |
theIndex = theReader.createOrOpenIndexOfLines(index_file, false, FILTER_NONE, status); |
|
104 |
theIndex = theReader.createOrOpenIndexOfLines(index_file, false, FILTER_NONE, status, numberOfLinesInRecord);
|
|
88 | 105 |
|
89 | 106 |
SuperCSVList list = new SuperCSVList( |
90 | 107 |
theReader, |
Also available in: Unified diff