如何使用文件帮助库读取粗糙的正确文件

本文关键字:文件 读取 何使用 帮助 | 更新日期: 2023-09-27 18:17:22

我必须读取粗糙的右文件是否有任何方法来读取它们使用文件帮助库

我的代码是这样的

[FixedLengthRecord()]
    class File_load
    {
        [FieldFixedLength(10)]
        [FieldTrim(TrimMode.Right)] 
        public string proj_name;
        [FieldFixedLength(30)]
        [FieldTrim(TrimMode.Right)] 
        public string iso;
        [FieldFixedLength(50)]
        [FieldTrim(TrimMode.Right)] 
        public string line;
        [FieldFixedLength(50)]
        [FieldTrim(TrimMode.Right)] 
        public string pid;
    }

如果最后一列不使用FieldFixedLength,则抛出异常

未处理异常:FileHelpers。BadUsageException:标记的记录类FixedLengthRecord属性必须在每个fi中包含一个FixedLength属性古人。

如何使用文件帮助库读取粗糙的正确文件

您可以使用FixedLengthRecord属性的FixedMode.AllowLessChars参数来处理您的场景。

这是一个工作程序(我将您的字段长度更改为2的例子)。

[FixedLengthRecord(FixedMode.AllowLessChars)]
class File_load
{
    [FieldFixedLength(2)]
    [FieldTrim(TrimMode.Right)]
    public string proj_name;
    [FieldFixedLength(2)]
    [FieldTrim(TrimMode.Right)]
    public string iso;
    [FieldFixedLength(2)]
    [FieldTrim(TrimMode.Right)]
    public string line;
    [FieldFixedLength(1000)]
    [FieldTrim(TrimMode.Right)]
    public string pid;
}
class Program
{
    static void Main(string[] args)
    {
        var engine = new FileHelperEngine<File_load>();
        var records = engine.ReadString(
           "112233444444" + Environment.NewLine +
           "1122334"
        );
        var firstRecord = records[0];
        Assert.AreEqual("11", firstRecord.proj_name);
        Assert.AreEqual("22", firstRecord.iso);
        Assert.AreEqual("33", firstRecord.line);
        Assert.AreEqual("444444", firstRecord.pid);
        var secondRecord = records[1];
        Assert.AreEqual("11", secondRecord.proj_name);
        Assert.AreEqual("22", secondRecord.iso);
        Assert.AreEqual("33", secondRecord.line);
        Assert.AreEqual("4", secondRecord.pid);
        Console.Read();
    }
}