문제

이를위한 몇 가지 표준 도구가 있지만 일부 사용자 (Windows)를 지원하려면 간단한 GUI가 필요합니다. 열린 파일 대화 상자를 가져 와서 처리 할 파일을 선택합니다.

파일은 XML 파일입니다. 파일에는 (처음 몇 줄 내에서) 삭제 또는 공백으로 대체 해야하는 텍스트 문자열이 포함됩니다 (어느 쪽이든 중요하지 않음).

문제는 XML 파일이 여러 기가 바이트가 크지 만 고정 검색 및 교체 문자열은 처음 4K 정도 내에 발생한다는 것입니다.

전체 금액을 메모리에 읽거나 디스크에 과도하게 쓰지 않고 검색 문자열을 덮어 쓰고 내내 저장하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

분명히 Whitespace로 교체하여 파일의 크기가 전체적으로 변경되지는 않습니다. 여기서는 최선의 선택이됩니다. 그렇지 않으면 디스크에서 업데이트하려면 전체 파일을 통해 스트리밍해야합니다.

이것이 유닉스 환경을위한 것이라면, 나는 mmap() 파일 시작의 적합한 부분을 RAM에 매핑하려면 내장을 편집하고 완료하십시오.

이 스 니펫 Win32 동등한 사용 방법을 보여줍니다 CreateEfilemapping () 기능.

다른 팁

자신의 도구를 쉽게 쓸 수 있습니다. 그것이 처음에 있다면, 모든 무차별 대입 approch가 작동합니다. 찾을 때까지 계속 스캔하십시오.

그러나 많은 디스크 쓰기를 피하는 것은 파일 크기를 변경하지 않는 경우에만 가능합니다. 가운데 어딘가에 바이트를 삭제하거나 삽입하려면 다음을 따르는 모든 것을 덮어 쓰야합니다. 귀하의 경우 실제로 모든 파일이 될 것입니다. 따라서 Whitespace로 교체해야합니다. 한 바이트를 다른 바이트로 교체하는 한 오버 헤드가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top