ZipInputStream.available() 이게 리턴값이 어떻게 산출되는건지 모르겠습니다.


 

기존에 최하버전이 2.2엿던 프로젝트를 3.0으로 변경하면서 문제가 발생했습니다.

제가 압축 소스를 구해서 쓴거라서 100% 이해는 못하고 사용하고있었는데요.

리소스 저장 속도가 현저히 느려져서(2.2버전때는 빨랏습니다.) Log하나하나찍어가면서 확인해봤더니 

파일 읽는 부분(?)에서 느려지는것같더라구요.

 

 byte[] buffer = new byte[zis.available()];
            fos = new FileOutputStream(file);
            bos = new BufferedOutputStream(fos, zis.available());
            
            int count = 0;
            while((count = zis.read(buffer, 0, zis.available())) != -1){
             bos.write(buffer, 0, count);
            }


이 부분에서  zis.available() 리턴값을 찍어보니까 1이더라구요. 그래서 반복문이 5만번정도 돌더라구요...

 

압축풀기 소스구할때 buffer 생성할때 크기를 1024같이 직접입력해준 소스들도 본것같은데

 

아무래도 buffer 크기때문에 그런게 아닌가 싶어서요.

 

 

API를 찾아봐도 영어를 잘못하는편이라 이해가 많이 어렵습니다 ㅠㅠ

 

available() 리턴값이 때문에 느려지는게 맞는지 질문드립니다..

 

도움 좀 부탁드려요.