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