2012-01-12 6 views
2

10GBの.​​datファイルを.NETで認識可能なものに解析しようとしています。列区切り記号は '〜'で、EOLは '++ EOL ++'です。私はデリミタを扱う方法を知っていますが、ファイルに実際の改行がないときは、 '++ EOL ++'を扱う簡単な方法を見つけることができません。これはFileHelpersのオプションで処理できますか、何かカスタムを書く必要がありますか?FileHelpers EOL文字を変更する

+0

+1 Gooあなたの問題(おそらく何かを忘れてしまった)に役立つソースコードには何も明白ではないようです。すばやく汚れた解決策として、文字列を置き換えることができます。 –

+0

これはいつも私の心の中にありましたが、私は作り込まれたものを見逃していないことを確認したかったのです。 – Scott

答えて

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; 
    } 
} 

をオーバーライドして、それまでに((残念ながらsealedInternalStreamReaderReadLineを除き、EOLコード

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

    etc... 
} 

が含まれているに同一である新しいクラスMyStreamReaderを作成する必要があります私はFileHelpers 2.9.9のソースコードを参照しています。バージョン2.0.0はSystem.IO.StreamReaderを使用しているので、サブクラス化するのではなく、InternalStreamReaderの代わりに使用できます。