2010-01-31 4 views
3

특정 텍스트 파일을 저장하는 데 사용되는 메모리를 줄이기 위해 알고리즘을 사용하고 싶습니다. 텍스트 저장 방법을 모르지만 마음.어떤 텍스트 편집기에서 텍스트가 내부적으로 표현되는 방식을 변경하고 싶습니다.

오픈 소스 텍스트 편집기를 확장하거나 (있는 경우) 텍스트 편집기를 직접 작성하는 것이 더 낫습니다.

누군가가 나에게 텍스트 편집기가 작동하는 방식과 데이터 저장 방법에 대한 기본 사항에 대한 링크 또는 자습서를 제공하면 좋을 것입니다.

가 명확히하기 위해 추가

편집, 내가하고 싶었던 대신 해시 테이블을 만들고 그것을 배치 할 필요가있는 주소를 저장 단어의 중복을 저장하는 것입니다.

그런 식으로 중복을 저장하지 않을 것입니다.

이것은 특정 텍스트 편집기에만 적용됩니다.

업데이트

덕분에 모두 나는 당신의 모든 말을하려고하는 것입니다 무엇을 얻었다. 어쨌든 내가하고 싶었던 것은 단어의 중복을 저장하는 대신에 해시 테이블을 만들어 놓아야하는 주소를 저장하는 것입니다.

이것은 중복을 저장하지 않았을 것입니다.

예, 특정 텍스트 편집기에만 적용됩니다. 그걸 결코 깨닫지 못했습니다.

답변

11

난 당신이 이런 짓을하면 더 이상 텍스트 편집기가없는 것

특정 텍스트 파일을 저장하는 데 사용되는 메모리를 줄이기 위해 알고리즘을 사용하려면, 대신 당신은 어떤 종류의 만든 것 이진 파일 편집기.

텍스트 파일 형식의 전체적인 점은 모든 텍스트 파일이 다른 텍스트 편집기에서 열릴 수 있음을 의미합니다.

3

텍스트는 기본적으로있는 그대로 저장됩니다. 즉 모든 문자가 1 바이트 또는 2 문자 (와이드 문자)를 차지하며 저장 될 때 변환이 수행되지 않습니다. 그것은 파일 끝 문자 또는 뭔가를 추가 할 수 있습니다. 이러한 파일을 압축하기 위해 자신의 알고리즘을 사용하지 마십시오. 그것이 zip 파일 및 기타 아카이브가 생성 된 이유입니다. 그들은 텍스트 압축에 능숙합니다. 이러한 기능을 텍스트 편집기에 추가하려면 압축하기 위해 일종의 사후 저장 후크를 추가 한 다음 열기 명령에 후크를 넣어 압축을 풉니 다. 당신이 매번 손으로 그것을하고 싶지 않다면. 메모장을 쓰지 않는 한, 처음부터 텍스트 편집기를 직접 작성하지 마십시오. 구문 강조가있는 텍스트 편집기는 적절한 라이브러리를 사용하더라도 매우 쉽지 않습니다. 나는 Visual Studio와 같은 것을위한 플러그인을 작성하거나 무엇을 가지고 있다고 말하고 싶습니다. 또는 오픈 소스 텍스트 편집기를 찾으십시오.

+0

나는 Mark에 동의한다. vim에 gzip 함수를 쉽게 추가 할 수 있습니다. 하지만 기념비적 인 규모의 텍스트를 다루지 않는다면 공간을 크게 절약 할 수 없으며 직선 텍스트 파일의 이식성을 잃게됩니다.gzip을 사용하는 경우 적어도 다른 사람들은 약간의 노력으로 열 수 있지만,이 알고리즘을 구현하면 아무도 편집기 사용자를 제외한 다른 사람이 파일을 열 수 없습니다. – Jay

+0

'vim'이 이미'.gz' gzip 압축 파일을 지원한다고 생각합니다. –

+0

Vim은 zip 아카이브와 gzipped 파일 내부에서 파일을 편집하는 것을 처리합니다. 또한 암호화 된 파일을 읽고 쓸 수 있습니다. –

7

이맥스는 압축을 투명하게 처리합니다. 확장자가 .gz 인 텍스트 파일을 만드십시오. Emacs는 저장 작업 중에 파일 내용을 자동으로 압축하고 다음에 파일을 열 때 압축을 풉니 다.

관련 문제