1.需要复制一份zip文件中内容进行加密,通过测试发现其中的压缩代码存在问题,部分测试代码如下:
File txtFile = new File(textName);//一个Txt文件
byte[] buffer = new byte[1024];
zipBuff = new FileOutputStream(fileNameZip);
zos = new ZipOutputStream(zipBuff);
fis = new FileInputStream(txtFile);
zos.putNextEntry(new ZipEntry(txtFile.getName()));
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
zos.flush();
// zos.closeEntry();
// zos.close();
String fileNameEnc = dir + "noFlush" + ".zip";
copyFile(fileNameZip,fileNameEnc);
主要作用是读取一个文件,进行压缩,压缩之后进行复制压缩,复制之后的文件使用 压缩软件无法打开。
因为在复制之前没有关闭Entry和close,
在调用zos.closeEntry();的时候会依据压缩类型把entry 的内容写入;并在特定位置写入改entry的信息,如大小,crc值;
在调用 zos.close();会在整个zip的尾部添加特定信息;
- close 代码笔想象要有用
- 如果读取的是TXT文件,就算不关闭,不调用.flush()方法,也能获取到最新的内容
- 在测试的时候,注意真正的输入、输入,本次真正的输入 为没有关闭的zip文件,把 关闭后的文件和 正确的文件对比 无法找出真正的原因