-
Notifications
You must be signed in to change notification settings - Fork 74
文件校验
quhongwei edited this page Mar 28, 2018
·
1 revision
文件校验器校验主要包括
1.文件体实际数据笔数跟文件头中记录的是否一致
2.汇总字段比较: 文件头中记录的总金额 跟 文件体中累加后的金额是否一致
3.文件校验器校验会读一遍文件,文件读会触发用户自定义的行校验器校验
文件校验器使用步骤:
1.构建FileConfig对象
FileConfig config = new FileConfig(filePath, tempaltePath,"nas")
2.通过Rdf-file统一入口FileFacotry创建文件校验器
FileValidator validator = FileFactory.createValidator(config)
3.校验文件
ValidateResult ret = validator.validate();
代码示例:
FileConfig config = new FileConfig(
File.class.getResource("path", "validate.json", StorageConfig.getNASConfig());
FileValidator validator = FileFactory.createValidator(config);
ValidateResult ret = validator.validate();
Assert.assertFalse(ret.isSuccess());
Assert.assertEquals("汇总字段totalAmount不存在", ret.getErrorMsg());
后续补充
-
触发条件
长度校验通过processor回调机制实现,长度校验processor校验不会自动触发,需要将key加入配置中 -
所谓长度校验是:
当向写文件过程同时计算写了多少字节的数据,最后跟目标存储上的文件大小做下比较来判断目标文件数据是否完整
当读文件过程同时计算读了多少字节数据,跟目标存储文件大小做比对,来判断读取的数据是否完整 -
代码示例
FileConfig config = new FileConfig(filePath, "/reader/de/template/template1.json", new StorageConfig("nas"));
// 添加长度校验processor可以
config.addProcessorKey("lengthReadValidator");
FileReader fileReader = FileFactory.createReader(config);
Map<String, Object> head = fileReader.readHead(HashMap.class);
System.out.println(head);
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
Map<String, Object> row = null;
while (null != (row = fileReader.readRow(HashMap.class))) {
System.out.println(row);
rows.add(row);
}
// 触发校验
fileReader.close();