更改FileHelpers EOL字符

时间:2012-01-12 17:46:45

标签: c# .net filehelpers

我正在尝试将10GB的.dat文件解析为.NET中可识别的内容。列分隔符是'〜',EOL是'++ EOL ++'。我知道如何处理分隔符,但是当文件中没有实际的换行符时,我找不到一种简单的方法来处理'++ EOL ++'。这可以通过FileHelpers中的选项处理,还是我必须编写自定义的东西?

1 个答案:

答案 0 :(得分:0)

默认情况下,没有FileHelpers不支持具有异常行尾字符序列的文件。

预解析文件并替换EOL序列可能是最简单的。但是,它是一个可扩展的库,因此您可以创建自己的DataStorage subclass。你基本上必须覆盖

public override object[] ExtractRecords()
{
    using (MyStreamReader reader = new MyStreamReader(fileName, base.mEncoding, true, 102400))
    {
        T[] localArray = this.ReadStream(reader, maxRecords);
        reader.Close();
        return localArray;
    }
}

然后创建一个新类MyStreamReader,它与(不幸的是sealedInternalStreamReader相同,除了包含EOL代码的ReadLine

switch (ch)
{
    case '\n':
    case '\r':

    etc...
}

(顺便说一句,我指的是FileHelpers 2.9.9的源代码。版本2.0.0似乎使用了System.IO.StreamReader,所以你可以将它子类化而不是复制InternalStreamReader。< / p>