2017-04-08 1 views
0

인터넷에서 다운로드 한 텍스트 파일의 압축을 풀어야합니다. 약 256KB 압축 및 2MB 압축 해제시. 리눅스 file 유틸리티는 "압축 된 데이터 16 비트"라고 알려줍니다. 그것을 살펴보면, compress이 LZW 알고리즘을 사용한다는 것을 발견했습니다. 7-zip은 파일의 "유형"이 "Z"(확장명이기도 함)이며 문제없이 파일을 압축 해제 할 수 있으므로 문제가 파일에 없다고 말합니다. 또한 압축 된 바이트 스트림이 16 진수 편집기를 열 때 표시된 바이트와 일치하기 때문에 파일을 다운로드하는 방법에 문제가 없음을 알고 있습니다.Android에서 Java로이 LZW 파일을 압축 해제 할 수없는 이유는 무엇입니까?

파일 자체는 환경 캐나다의 일반 텍스트 Nowcasting 매트릭스 파일입니다. 불행히도 다른 링크를 추가할만한 충분한 평판이 없습니다.

내장 된 LZW 디코더를 찾을 수 없어 써드 파티 라이브러리를 사용해야했습니다. 꽤 많은 것들이 있지만, 지금까지 시도한 것들 중 어느 것도 파일을 압축 해제 할 수 없었습니다.

lzwj - throws IndexOutOfBoundsException: Invalid index 40223, size is 256. (색인 자체는 그다지 중요하지 않습니다.) 그러나 기본 코드 워드 길이는 12입니다. file의 출력이 (이 가정에서 잘못 되었습니까?) 나타낼 것으로 보이지만 코드 워드 길이가 16 인 소스를 변경했지만 동일한 예외 (표시된 인덱스가 throw됩니다. 오류는 코드 워드 길이가 16 인 경우).

This algorithm도 파일 대신 입력 스트림을 사용하도록 몇 가지 수정을 한 후에 인덱스 외부 예외를 throw합니다. 그러나 학생이 과제를 위해 작성한 것으로 보입니다. 어쨌든 그것을 사용하는 것이 편안하지 않습니다.

This library 불행히도 compress 메서드 만 있고 압축 풀기는 수행하지 않습니다.

7-zip JBinding이 내 최선의 방법 같았지만 안타깝게도 Android 또는 모든 플랫폼 jar 또는 ARM 전용 항아리에서 작동하지 않는 것으로 보입니다.

나는 몇 개의 라이브러리와 개별 클래스 소스 파일을 보았지만 관련 라이센스가 없으며 저작권이있는 코드는 사용하지 않습니다.

이러한 오류의 원인을 찾거나 다른 해결책을 제공 할 수있는 사람이 있습니까?

+0

Apache Commons Compress를 시도해 보셨습니까? https://commons.apache.org/proper/commons-compress/ 및 http://stackoverflow.com/questions/36282358/android-7zip-a-folder-using-apache -commons-compress –

+0

감사합니다. 완벽하게 작동합니다! 나는 그것이 내 레이더 밑으로 어떻게 날아 갔는지 모르겠다. 나는 여기에 다른 LZW 관련 질문을 보지 못했다. – andrej88

답변

관련 문제