这两天遇到了一些小问题,虽然找到了一些解决的途径和方案,但都不够完美。
任务描述:
1.将图片资源等用zip格式压缩,并在zip文件头添加了 16个字节的 数据
2.读取的时候 先要把 头中的16个字节预先解析 然后 将剩余的zip文件获取出来
FileInputStream in = new FileInputStream(filePath);
DataInputStream dis = new DataInputStream(in);
long lenth = dis.readLong();
long version = dis.readLong();
ZipInputStream zipInputStream = new ZipInputStream(dis);
try {
ZipEntry ze;
while ((ze = zipInputStream.getNextEntry()) != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count;
while ((count = zipInputStream.read(buffer)) != -1) {
baos.write(buffer, 0, count);
}
String filename = ze.getName();
byte[] bytes = baos.toByteArray();
// do something with 'filename' and 'bytes'...
}
} finally {
zipInputStream.close();
}
该方案虽然能解决这个问题,但是效率极其低下,把整个zip文件都遍历了一次。
另外一种方案就是 用 ZipFile,但我试用的zip文件 可以认为加密过后的 所以不能直接使用
可以考虑重新生成一个 正常的 zip文件 然后 使用
还有 download zip的时候 如何 断点续传等等。。;
这些问题 先记录下来 。