사용자가 파일을 압축하고 압축을 풀 수있는 응용 프로그램을 Android 용으로 만들었으며 패키지 java.util.zip
을 사용했습니다. 다 괜찮아. 속도, 파일은 완전히 압축되고 디렉토리와 함께 압축이 해제됩니다. 유일한 문제는 응용 프로그램이 큰 파일 (1GB 이상)을 압축/압축 해제 할 수 없다는 것입니다.Java 큰 파일 (> 1GB)을 압축/압축 해제
문제는 내 buffer
의 크기라고 생각합니다. 필자가 보았던 다른 코드는 버퍼의 값이 1024 또는 2048 또는 8192이지만 내 버퍼의 값은 선택한 파일의 크기를 기반으로합니다 (단지 유연하게 만듭니다). 그러나 사용자가 큰 파일 (크기가 8 자리 이상)을 선택하면 오류가 발생합니다. 나는이 사이트에서 그물과 여기를 찾았지만 대답을 찾을 수 없다. 내 문제는이 유사합니다 미래에 도움을
To Compress a big file in a ZIP with Java
감사합니다! :)
편집 : 의견과 답변을
감사합니다. 정말 많은 도움이되었습니다. 내 생각에 자바에서 압축/압축 해제에서 BUFFER
은 파일 크기를 의미하므로 내 프로그램에서는 버퍼 크기를 유연하게 만들었습니다 (버퍼 크기 = 파일 크기). 누군가가 버퍼가 작동하는 방식을 설명해 주시겠습니까? 왜 BUFFER
에 고정 값이 있는지 알 수 있습니다. 또한 다른 사람들이 왜 버퍼 크기가 8k인지 아니면 더 나은지에 대해 사람들이 말하는 이유를 이해할 수 있습니다. 고마워요! :)
코드를 게시하시기 바랍니다 - 당신은 버퍼 크기를 선택 특히 부분. 네 버퍼가 너무 커지는 것 같아. – Polynomial
파일 크기에 따라 버퍼 크기를 조정할 필요가 없습니다. 어떤 것이 든 그 아래에있는 I/O 레이어와 일치하도록 조정해야합니다. 그건 까다 롭고 휴대용이 아닙니다. 고정 된 버퍼 크기 만 있으면됩니다. – Thilo
다항식, 귀하의 권리는 제 경우입니다. Thilo가 논평 한 바에 따라, 나는'버퍼'의 기능을 오해 한 것을 깨달았다. 너희 둘에게 +1. 즉, 버퍼의 고정 된 값으로 파일의 크기를 압축하거나 압축을 풀 수 있다는 뜻입니까? 그래서 다른 버퍼 크기의 목적은 무엇입니까? 1024, 2048, 8192 등등? – John