public static void Main() {
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream)) {
writer.WriteLine("01010000001002699000PRESUNTO FATIADO KG ");
writer.WriteLine("01010000002004199000BACON KG ");
ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration();
config.DetectEncodingFromByteOrderMarks = true;
config.FixedLengthRecordFieldConfigurations
.Add(new ChoFixedLengthRecordFieldConfiguration("Code", 6, 6) { FieldType = typeof(string) });
config.FixedLengthRecordFieldConfigurations
.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 20, 25) { FieldType = typeof(string) });
config.FixedLengthRecordFieldConfigurations
.Add(new ChoFixedLengthRecordFieldConfiguration("Price", 12, 6) { FieldType = typeof(string) });
var list = new ChoFixedLengthReader<Product>(stream, config)
.ErrorMode(ChoErrorMode.IgnoreAndContinue)
.Setup(s => s.BeforeRecordLoad += (o, e) => {
var line = e.Source as string;
e.Source = line.Substring(0, 48);
foreach (var item in list) {
Console.WriteLine(item.Code);
Console.WriteLine(item.Name);
Console.Write("Price: ");
Console.WriteLine(item.Price);
public string Code { get; set; }
public string Name { get; set; }
public string Price { get; set; }