2012-01-12 8 views
2

10GB의 .dat 파일을 .NET에서 인식 가능한 것으로 구문 분석하려고합니다. 열 구분 기호는 '~'이고 EOL은 '++ EOL ++'입니다. 구분자를 처리하는 방법을 알고 있지만 파일에 실제 줄 바꿈이없는 경우 '++ EOL ++'을 처리하는 쉬운 방법을 찾을 수 없습니다. FileHelpers에서 옵션으로 처리 할 수 ​​있습니까? 아니면 사용자 정의 무언가를 써야합니까?변경 FileHelpers EOL 문자

+0

+1 Goo d 문제는 소스 코드에서 문제를 해결하는 데 도움이 될만한 내용이없는 것처럼 보입니다 (아마도 무언가를 놓친 것 같습니다). 신속하고 더러운 솔루션으로 문자열 만 대체하면됩니다. –

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

을 무시하고 다음으로합니다 ((불행히도 sealed) InternalStreamReaderReadLine을 제외하고 EOL 코드

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

    etc... 
} 

를 포함하는 동일 될 새로운 클래스 MyStreamReader을 만들 것 방법은 FileHelpers 2.9.9에 대한 소스 코드를 참조하고 있습니다. 버전 2.0.0은 System.IO.StreamReader을 사용하는 것 같습니다. 따라서 InternalStreamReader 대신에 서브 클래스로 만들 수 있습니다.