크기가 100MB 이상이고 ~ 15000 개의 파일이있는 큰 아카이브 (내 경우에는 zip)가 있습니다. 이 아카이브에서 단 하나의 파일 만 빨리 추출해야합니다.android의 아카이브에서 하나의 파일 압축 해제
final String zipPath = "archive.zip";
FileInputStream fin = new FileInputStream(zipPath);
in = new ZipInputStream(fin);
for (ZipEntry entry = in.getNextEntry(); entry != null; entry = in.getNextEntry()) {
if(entry.equals("file.name")){
//unzip this entry
break;
}
}
그것은 작동
하지만 너무 SLOW :
나는 다음 코드를 시도했다.아카이브에 필요한 파일을 찾을 수 있습니까? 예를 들어, 리눅스에서 가능 extremally 빠른 일반적으로 명령
unzip archive.zip myfile.name
으로, 나는 발견하고 약간의 아카이브에서 하나 개의 파일을 압축 해제해야합니다. 그것은 다른 형식 일 수 있습니다 ... 다른 형식으로 더 쉬울 수도 있습니다.
그 파일 이름을 다른 방식으로 정렬 할 수 있습니까? –
안녕하세요. 나는 생각한다, 부정. 일반 우편 보관소가 있습니다. 그리고 그 알파벳 순서로 아카이브 읽기에서 항목을 찾았지만 내 파일의 이름이 "zzz.file"이면 아카이브에서이 파일을 찾을 시간이 많이 있습니다. – lubart
알파벳순으로 정렬 된 경우 이진 검색을 수행 할 수 있습니다 (최악의 경우 O (log (n))의 복잡함) –