2012-05-08 3 views
0

최소 크기의 메모리를 사용하는 매우 큰 텍스트 파일 (일반적으로 100MB 이상)의 문자 인코딩 "windows-1252"를 UTF8로 변환해야합니다.큰 문자 파일을 특정 문자 세트에서 UTF8로 변환

누구나 가장 빠르고 가장 낮은 메모리 오버 헤드 방법은 무엇입니까?

나는 위버 빠른 StreamReader/StreamWriter 조합을 추측하고 있습니다!

감사

Encoding.Convert 방법은 byte[]에서 작동
+1

어떻게 건설적이지 않을 수 있습니까? 이것은 실제 문제입니다. 리소스가 제한된 환경에서 거대한 텍스트 파일을 메모리에로드 한 다음 File.WriteAllText()를 사용할 수 없습니다. – krisdyson

답변

3

당신은 지정된 UTF-8 당신이 StreamWriter 함께 쓰기 같은 반복에서 "windows-1252"

  • 과에서는 StreamReader와

    • 먼저 읽기를하여 덩어리에서 작동하는 모든 데이터를 할당하지 않으려면
  • 2

    - 당신이 다음 새 파일에 기록 원본 파일 읽기, 작은 버퍼이 호출 할 수 있습니다. 원본 파일이 가변 바이트 인코딩을 사용하는 경우 가능한 경우 문자 경계에서 버퍼로만 읽는 데 매우주의해야합니다.

    이렇게하면 선택한 버퍼 크기에 따라 원하는만큼 메모리를 사용할 수 있습니다.