FileHelpers: How to skip first and last line reading fixed width text

纵然是瞬间 提交于 2019-12-03 23:07:41

You can use these attributes

IgnoreFirst: Indicates the numbers of lines to be ignored at the begining of a file or stream when the engine read it.

[IgnoreFirst(1)] 
public class OrdersVerticalBar 
{ ...

IgnoreLast: Indicates the numbers of lines to be ignored at the end of a file or stream when the engine read it.

[IgnoreLast(1)] 
public class OrdersVerticalBar 
{ ...

You can access the values later with

engine.HeaderText
engine.FooterText

You could use the BeforeReadRecord event to check the format of the line. Set the SkipThisRecord property in the event data if it's the first record. Determining if it's the last record is something of a problem, but you could just check the length or format instead. Of course, that'll prevent you from catching errors caused by malformed records.

Another possibility is to load the entire file into memory using File.ReadAllLines. Remove the first and last items from the resulting array, turn it back into a string, and then call ReadString. Or you could write the strings to a MemoryStream and call ReadStream.

the best is to decorate your class with the [IgnoreFirst] attribute.

If for some reason you can't add the attribute you can do something like this

var engine = new FileHelperEngine<T>();
engine.BeforeReadRecord += (e, args) =>
{
    if (args.LineNumber == 1)
        args.SkipThisRecord = true;
};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!