Java源码示例:com.univocity.parsers.fixed.FixedWidthFields
示例1
@Override
protected FixedWidthParserSettings parserSettings(Map<String, String> config) {
FixedWidthFields fieldLengths = new FixedWidthFields();
Optional.ofNullable(config.get(FILE_READER_DELIMITED_SETTINGS_FIELD_LENGTHS))
.map(fl -> Arrays.stream(fl.split(",")))
.ifPresent(fl -> fl.forEach(field -> fieldLengths.addField(Integer.parseInt(field))));
FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldLengths);
settings.setKeepPadding(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_KEEP_PADDING, false));
settings.setUseDefaultPaddingForHeaders(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_PADDING_FOR_HEADERS, true));
settings.setRecordEndsOnNewline(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_ENDS_ON_NEW_LINE, true));
settings.setSkipTrailingCharsUntilNewline(getBoolean(config, FILE_READER_DELIMITED_SETTINGS_SKIP_TRAILING_CHARS, false));
settings.getFormat().setPadding(config.getOrDefault(FILE_READER_DELIMITED_SETTINGS_FORMAT_PADDING, " ").charAt(0));
return settings;
}
示例2
/**
* Function to create a univocity Parser
*/
private void createUnivocityParser()
{
List<FixedWidthSchema.Field> fields = schema.getFields();
FixedWidthFields fieldWidthFields = new FixedWidthFields();
for (int i = 0; i < fields.size(); i++) {
FixedWidthSchema.Field currentField = fields.get(i);
int fieldLength = currentField.getFieldLength();
FieldAlignment currentFieldAlignment;
if (currentField.getAlignment().equalsIgnoreCase("centre")) {
currentFieldAlignment = FieldAlignment.CENTER;
} else if (currentField.getAlignment().equalsIgnoreCase("left")) {
currentFieldAlignment = FieldAlignment.LEFT;
} else {
currentFieldAlignment = FieldAlignment.RIGHT;
}
fieldWidthFields.addField(currentField.getName(), fieldLength, currentFieldAlignment, currentField.getPadding());
}
FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldWidthFields);
univocityParser = new com.univocity.parsers.fixed.FixedWidthParser(settings);
}
示例3
public boolean writeBeanToFixedWidthFile(List<Product> products, String outputPath) {
try (Writer outputWriter = new OutputStreamWriter(new FileOutputStream(new File(outputPath)), "UTF-8")) {
BeanWriterProcessor<Product> rowProcessor = new BeanWriterProcessor<Product>(Product.class);
FixedWidthFields fieldLengths = new FixedWidthFields(8, 30, 10);
FixedWidthWriterSettings settings = new FixedWidthWriterSettings(fieldLengths);
settings.setHeaders("product_no", "description", "unit_price");
settings.setRowWriterProcessor(rowProcessor);
FixedWidthWriter writer = new FixedWidthWriter(outputWriter, settings);
writer.writeHeaders();
for (Product product : products) {
writer.processRecord(product);
}
writer.close();
return true;
} catch (IOException e) {
logger.error(e.getMessage());
return false;
}
}
示例4
private void init()
{
fields = new ArrayList<FixedWidthField>();
List<String> headers = new ArrayList<String>();
List<Integer> fieldWidth = new ArrayList<Integer>();
for (String tmp : fieldDescription.split(",")) {
String[] fieldTuple = tmp.split(":(?=([^\"]*\"[^\"]*\")*[^\"]*$)", -1);
FixedWidthField field = new FixedWidthField();
field.setName(fieldTuple[0]);
field.setType(fieldTuple[1]);
field.setWidth(Integer.parseInt(fieldTuple[2]));
headers.add(fieldTuple[0]);
fieldWidth.add(Integer.parseInt(fieldTuple[2]));
if (field.getType() == FIELD_TYPE.DATE) {
if (fieldTuple.length > 3) {
field.setDateFormat(fieldTuple[3].replace("\"", ""));
} else {
logger.error("Date format is missing for the field {}", field.getName());
throw new RuntimeException("Missing date format");
}
}
fields.add(field);
}
header = headers.toArray(new String[headers.size()]);
int[] width = Ints.toArray(fieldWidth);
FixedWidthFields lengths = new FixedWidthFields(header, width);
FixedWidthParserSettings settings = new FixedWidthParserSettings(lengths);
settings.getFormat().setPadding(this.padding);
fixedWidthParser = new FixedWidthParser(settings);
}
示例5
public List<String[]> parseFixedWidthFile(String relativePath) {
try (Reader inputReader = new InputStreamReader(new FileInputStream(new File(relativePath)), "UTF-8")) {
FixedWidthFields fieldLengths = new FixedWidthFields(8, 30, 10);
FixedWidthParserSettings settings = new FixedWidthParserSettings(fieldLengths);
FixedWidthParser parser = new FixedWidthParser(settings);
List<String[]> parsedRows = parser.parseAll(inputReader);
return parsedRows;
} catch (IOException e) {
logger.error("IOException opening file: " + relativePath + " " + e.getMessage());
return new ArrayList<String[]>();
}
}
示例6
public FixedWidthFields columnSpecs() {
return columnSpecs;
}
示例7
public FixedWidthFields columnSpecs() {
return columnSpecs;
}
示例8
public FixedWidthWriteOptions.Builder header(FixedWidthFields columnSpecs) {
this.columnSpecs = columnSpecs;
return this;
}
示例9
public FixedWidthFields columnSpecs() {
return columnSpecs;
}
示例10
public FixedWidthFields columnSpecs() {
return columnSpecs;
}
示例11
public FixedWidthWriteOptions.Builder header(FixedWidthFields columnSpecs) {
this.columnSpecs = columnSpecs;
return this;
}