zip으로 압축되서 DB에 저장된 데이터가 있는데..
운영할때 실 데이터를 확인하기 위한 툴이 필요해 작성한 코드입니다.
public HashMap<String, String> unzip(byte[] baZip){
final int BUFFER_SIZE = 1024 * 4;
ByteArrayInputStream bais = new ByteArrayInputStream(baZip);
ZipInputStream zis = new ZipInputStream(bais);
ZipEntry ze = null;
HashMap<String, String> map = new HashMap<String, String>();
byte[] buf = new byte[ BUFFER_SIZE ];
try {
while( (ze = zis.getNextEntry()) != null ) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = 0;
while( (len = zis.read(buf, 0, BUFFER_SIZE) ) != -1 ){
baos.write(buf, 0, len);
}
map.put(ze.getName(), baos.toString()); //k:FileName , v:Content
baos.flush();
baos.close();
zis.closeEntry();
}
zis.close();
bais.close();
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
다 짜놓고 나니..
그냥 FileOutputStream으로 뽑느거랑 아무런 차이가 없네요;;
인터넷에서 찾아본 일부 코드가...
while( (len = zis.read(buf) != -1 ){
baos.write(buf);
}이렇게 되어있었는데..
제가 테스트한 소스에서는 length가 없으면 비정상 동작하더군요.