我需要读取一个充满记录的文本文件。前两行中有一个包含多个字段的标题,之后列出了记录。每条记录涵盖三行。每条记录都由固定长度的字段组成。我想用字段填充数据表。
例如,文件可能如下所示:
header1 0101 2012
header2 0202 0000
rec10 abc
rec11 def
rec12 ghi
rec20 jkl
rec21 mno
rec22 pqr
对于每个字段,我都有字段的开头和长度。
我尝试使用 StreamReader 和 substring,它可以工作,但非常尴尬。
有更好的方法吗?
最佳答案
使用FileHelpers library ,您的示例可以解析如下:
声明一个类来表示您的对象:
[IgnoreFirst(2)]
[FixedLengthRecord(FixedMode.ExactLength)]
public sealed class Record
{
[FieldTrim(TrimMode.Right)]
[FieldFixedLength(6)]
public String Header1;
[FieldFixedLength(3)]
public String Data1;
[FieldInNewLine()]
[FieldTrim(TrimMode.Right)]
[FieldFixedLength(6)]
public String Header2;
[FieldFixedLength(3)]
public String Data2;
[FieldInNewLine()]
[FieldTrim(TrimMode.Right)]
[FieldFixedLength(6)]
public String Header3;
[FieldFixedLength(3)]
public String Data3;
}
从文件中加载数据,如下所示:
FileHelperEngine<Record> engine = new FileHelperEngine<Record>();
engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
DataTable records = engine.ReadFileAsDT(@"myTextFile.txt");
if (engine.ErrorManager.ErrorCount > 0)
engine.ErrorManager.SaveErrors("Errors.txt");
关于c# - 从文本文件读取多行固定宽度记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411751/