我有很多带有标题和结尾的文件。这些记录与文件的正文不同,例如:
(BOF)
Header 20180821 12345(CRLF)
A 12 BCAD 000012345 20160324 XYZ(CRLF)
B 10 BCXD 000012331 20160324 ABC(CRLF)
C 99 BCZZ 000010845 20160324 1AB(CRLF)
Trailer 003 00000(CRLF)
(EOF)
我知道FH可以“ IgnoreFirst”,“ IgnoreLast”,但是我的问题是它可以将这些标题/尾部提取或转换为与主体不同的另一个对象吗?
谢谢
答案 0 :(得分:0)
您可以使用MultiRecordEngine
。文档为here。
var engine = new MultiRecordEngine(
typeof(HeaderObject),
typeof(RecordObject),
typeof(TrailerObject));
engine.RecordSelector = new RecordTypeSelector(CustomSelector);
然后定义一个CustomSelector
。
private Type CustomSelector(MultiRecordEngine engine, string recordLine)
{
if (recordLine.Length == 0)
return null;
if (recordLine.StartsWith("Header")))
return typeof(HeaderObject);
else if (recordLine.StartsWith("Trailer")))
return typeof(TrailerObject);
// else
return typeof(RecordObject);
}