2011-05-13 4 views
3

은 내가 예를 들어 IsEmpty 함수를 들어, 내 개체의 압축 된 버전에 대한 방법을 실행할 수있는 다음과 같은 bit:java에서 comrpessed 개체를 사용하여 파일을 검색 할 수 있습니까?

(우편 번호 (시리얼 (X)))의 ORACLE에서 읽어?

개체의 인코딩 때문에 임의의 개체에 실제로 실행 가능하지 않습니다. 특정 객체 (예 : String)의 경우 결과 비트 스트림을 비교할 수 있습니다. 인코딩은 동일 오브젝트가 인코딩 될 때마다 동일한 비트 세트로 인코딩된다는 점에서 안정적입니다.

그래서 나는 긴 4M 뭔가의 문자 배열이있는 경우 나 GZIPOutputStream를 사용하여 바이트의 수백을 압축 한 다음 메모리에 전체 파일을 매핑하는 것은 가능하다 말,이 아이디어를 얻고, 비트를 비교하여 임의 검색을 수행 하시겠습니까? "abcd"의 문자 시퀀스를 찾고 있다면, 어떻게 든 "abcd"의 압축 된 버전의 비트 시퀀스를 가져 와서 파일을 검색 할 수 있을까요? 감사.

+0

압축 알고리즘에 따라 작동하지만 압축이 반드시 바이트 경계를 고려하지 않으므로 검색이 실제로 어려울 수 있습니다. –

답변

1

스트림을 처리 할 때 각 바이트 변경 인코딩에 GZIP 또는 이와 유사한 방법을 사용할 수 없습니다. 즉, 바이트가 의미하는 바를 결정하는 유일한 방법은 모든 바이트를 이전에 읽는 것입니다.

데이터에 임의로 액세스하려는 경우 문자열을 더 작은 섹션으로 나눌 수 있습니다. 그렇게하면 데이터의 상대적으로 짧은 부분 만 압축을 풀면됩니다.

+0

감사합니다. – user685275

관련 문제