当前位置: 首页 > 工具软件 > Docs-base > 使用案例 >

java 文件zip压缩 base64加密,Base64-编码文件并对其进行压缩

淳于凯
2023-12-01

我的目标是对文件进行编码并将其压缩到java文件夹中。我必须使用Apache的Commons-codec库。我能够编码和压缩它,它工作正常,但是当我解码它回到它的原始形式,它看起来像文件尚未完全编码。看起来有几个部分不见了。有人能告诉我为什么会发生这种情况吗?Base64-编码文件并对其进行压缩

我也附上我的代码的一部分供您参考,以便您可以相应地指导我。

private void zip() {

int BUFFER_SIZE = 4096;

byte[] buffer = new byte[BUFFER_SIZE];

try {

// Create the ZIP file

String outFilename = "H:\\OUTPUT.zip";

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(

outFilename));

// Compress the files

for (int i : list.getSelectedIndices()) {

System.out.println(vector.elementAt(i));

FileInputStream in = new FileInputStream(vector.elementAt(i));

File f = vector.elementAt(i);

// Add ZIP entry to output stream.

out.putNextEntry(new ZipEntry(f.getName()));

// Transfer bytes from the file to the ZIP file

int len;

while ((len = in.read(buffer)) > 0) {

buffer = org.apache.commons.codec.binary.Base64

.encodeBase64(buffer);

out.write(buffer, 0, len);

}

// Complete the entry

out.closeEntry();

in.close();

}

// Complete the ZIP file

out.close();

} catch (IOException e) {

System.out.println("caught exception");

e.printStackTrace();

}

}

2012-03-13

dmurali

+0

您能否提供一些样品,显示您放入的东西,您拿出的东西以及您期望得到的东西? –

2012-03-13 09:25:17

+0

我不认为它与你的问题有任何关系,但是你的'in.read'测试应该是in.read(buffer)> -1',因为这就是javadoc所说的。 javadoc没有说'0'表示流结束。 http://docs.oracle.com/javase/1.4。2/docs/api/java/io/InputStream.html#read%28byte []%29 –

2012-03-13 09:25:23

+1

如果我们的心是纯净的,我们可以在我们的有生之年剔除base64。 –

2012-03-13 09:28:17

 类似资料: