3

10GB の .dat ファイルを解析して、.NET で認識できるものにしようとしています。列区切り文字は「~」で、EOL は「++EOL++」です。区切り文字の処理方法は知っていますが、ファイルに実際の改行がない場合に「++EOL++」を処理する簡単な方法が見つかりません。これは FileHelpers のオプションで処理できますか、それとも何かカスタムを作成する必要がありますか?

4

1 に答える 1

0

FileHelpers は、既定では、異常な行末文字シーケンスを含むファイルをサポートしません。

ファイルを事前に解析し、EOL シーケンスを置き換えるのがおそらく最も簡単でしょう。ただし、これは拡張可能なライブラリであるため、独自のDataStorage サブクラスを作成できます。基本的にオーバーライドする必要があります

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 を作成します。これは、EOL コードが含まれていることを除いて (残念ながらsealed)と同じです。InternalStreamReaderReadLine

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

    etc...
}

(ちなみに、FileHelpers 2.9.9 のソース コードを参照しています。バージョン 2.0.0 では a を使用しているように見えるSystem.IO.StreamReaderので、複製する代わりにサブクラス化できますInternalStreamReader

于 2012-01-13T12:10:07.743 に答える