2013-04-01 2 views
0

대용량 CSV 파일이 약 50k + 회선입니다. CHCSVParser를 사용하여 모든 행을 파서로 잘 해석합니다.메모리에로드하지 않고 CSV 파일의 행 수 계산

데이터가 구문 분석되어 CoreData에 추가 될 때 사용자에게 몇 가지 유형의 진행 상황을 표시하고 싶습니다. 줄 수를 알고 있으면 numLinesParsed/totalLines 만 표시 할 수 있습니다. 메모리

  • 촬영으로 모든로드

    1. '

    내가 돈보다 몇 초 이상 :없이 CSV 파일의 줄 수를 계산하는 빠른 방법이 있다면 궁금 해서요 내가이 목표 C를 해봐야하는지, 아니면 똑바로 C를하는 것이 더 좋을지 안다.

  • +0

    파일을 일괄 적으로 읽는 방법은 무엇입니까? –

    +0

    @AnoopVaidya it 비효율적 인 이유는 내가 그것을 일괄 적으로 읽었을 때 파싱 할 수도 있기 때문이다. "file.numberOfLines"와 같은 일을하는 아주 비밀스러운 방법이 있는지 나는 몰랐다. – random

    +3

    언제나 (bytes_processed/size_of_file) * 100, 정확히 원하는 것은 아니지만 최소한 사용자는 걸릴 시간을 알게됩니다. –

    답변

    1

    size of the file을 바이트 단위로 가져 와서 줄 당 문자 수 (각 줄의 문자 수가 같은 경우)로 나누거나 처리 된 문자 수로 나누어 비율을 구하는 이유는 무엇입니까?

    업 : 호르헤 누네즈 ... 이미 말했다

    나는 그 이상에서, OS 수준의 기능처럼 보이기 때문에 C는 메모리에 파일을로드하지 않고 행의 수를 얻는 방법이 생각하지 않는다
    +0

    다른 제안이 없다면 이걸 가지고 가야 할 것입니다. – random

    +0

    전체 파일을 읽지 않고 파일에서 지정된 문자의 실제 크기를 얻는 방법을 알지 못합니다. (일부 HW 솔루션에 의한 것일 수도 있지만 ...) 'wc'on 리눅스는 실제로 전체 f를 읽습니다. ile. – Kupto

    1

    나에게 ...

    UNIX 시스템을 사용하는 경우 'wc'명령을 사용하여 모든 파일의 줄 수를 얻을 수 있습니다. '시스템'명령을 통해 C로 실행하고 출력을 임시 파일로 리디렉션 할 수 있어야합니다. 그러면 임시 파일에 매우 빨리 액세스하고 거기에서 행 수를 파싱 할 수 있습니다.

    Windows를 사용하는 경우 findstr 명령 'findstr/R/N "^"file.txt "를 사용하여 줄 수를 얻을 수 있습니다.이 줄은 콜론을 인쇄 한 다음 모두 파일의 라인들.이 출력을 약간 줄일 수는 있을지 모르겠지만, 머리 꼭대기에서 어떻게해야할지 모르겠습니다.

    +0

    불행히도 iOS에서해야합니다. – random

    +0

    아, 알겠습니다. 나는 CHCSVParser가 무엇인지 보지 않았고, 다른 써드 파티 툴이라고 가정했다. 예, OS 레벨 방법을 사용하는 것은 아마도 문제가되지 않을 것입니다. – Urchin

    관련 문제