2012-01-12 45 views
2

我想解析10GB的.dat文件到.NET中可識別的東西。列分隔符是'〜',EOL是'++ EOL ++'。我知道如何處理分隔符,但當文件中沒有實際的換行符時,我無法找到處理'++ EOL ++'的簡單方法。這可以用FileHelpers中的選項來處理,還是必須寫一些自定義的東西?更改FileHelpers EOL字符

+0

+1 Goo問題,在源代碼中似乎沒有任何明顯的東西可以幫助你解決問題(我可能錯過了一些東西)。作爲一個快速和骯髒的解決方案,你可以做一個字符串替換。 – 2012-01-12 18:32:46

+0

這一直是我的想法,但我想確保我不會錯過內置的東西。 – Scott 2012-01-13 14:43:22

回答

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,這將是相同的,不同之處ReadLine(抱歉sealedInternalStreamReader其中包含EOL代碼

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

    etc... 
} 

(由我指的是FileHelpers 2.9.9的源代碼,版本2.0.0似乎使用System.IO.StreamReader,所以你可以將其子類化,而不是複製InternalStreamReader