Java OutputStream read()工作,read(缓冲区)创建错误

时间:2015-06-15 13:23:32

标签: java

我尝试使用https://bitbucket.org/matulic/ziputils/overview处的库创建加密的Zip文件。如http://blog.alutam.com/2012/03/31/new-library-for-reading-and-writing-zip-files-in-java所述,我使用read()来读取每个字节,它可以正常工作而不会出现任何错误。但是,当我尝试使用缓冲区(我相信它更有效)时,我得到的文件有错误。我使用的代码如下:

FileInputStream src = new FileInputStream("ZIP_FILE_PATH");
ZipEncryptOutputStream dest = new ZipEncryptOutputStream(new FileOutputStream("ENCRYPTED_FILE_PATH"), "password");

byte[] buffer = new byte[1024];
int count = 0;
while ((count = src.read(buffer)) != -1) {
    dest.write(buffer, 0, count);
}
dest.close();
src.close();

当我用WinRAR解压缩文件时,会显示CRC错误(当我使用read()时,这不会发生)。有趣的是,在失败的文件中,在文件属性中,加密文件的文件大小小于原始文件,但磁盘大小属性是相同。这可能有什么问题?

0 个答案:

没有答案