2
我想解析10GB的.dat文件到.NET中可識別的東西。列分隔符是'〜',EOL是'++ EOL ++'。我知道如何處理分隔符,但當文件中沒有實際的換行符時,我無法找到處理'++ EOL ++'的簡單方法。這可以用FileHelpers中的選項來處理,還是必須寫一些自定義的東西?更改FileHelpers EOL字符
我想解析10GB的.dat文件到.NET中可識別的東西。列分隔符是'〜',EOL是'++ EOL ++'。我知道如何處理分隔符,但當文件中沒有實際的換行符時,我無法找到處理'++ EOL ++'的簡單方法。這可以用FileHelpers中的選項來處理,還是必須寫一些自定義的東西?更改FileHelpers EOL字符
默認情況下,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,這將是相同的,不同之處ReadLine
(抱歉sealed
)InternalStreamReader
其中包含EOL代碼
switch (ch)
{
case '\n':
case '\r':
etc...
}
(由我指的是FileHelpers 2.9.9的源代碼,版本2.0.0似乎使用System.IO.StreamReader
,所以你可以將其子類化,而不是複製InternalStreamReader
。
+1 Goo問題,在源代碼中似乎沒有任何明顯的東西可以幫助你解決問題(我可能錯過了一些東西)。作爲一個快速和骯髒的解決方案,你可以做一個字符串替換。 – 2012-01-12 18:32:46
這一直是我的想法,但我想確保我不會錯過內置的東西。 – Scott 2012-01-13 14:43:22