Java Zip文件大小异常

Java Zip文件大小异常,java,file,zip,size,Java,File,Zip,Size,我在zip文件中看到了一些不寻常的东西。 我有两个.txt文件,然后在我的应用程序中通过java.util.zip(ZipoutStream,ZipEntry…压缩这两个文件,然后通过浏览器作为可下载的zip文件返回。 一个文件包含的数据是数据库blob,另一个是StringBuffer。我的blob txt文件大小为10 mb,我的StringBuffertxt文件大小为15 mb,但当这些文件压缩时,blob txt zip文件的大小大于StringBuffertxt文件,尽管它包含较小的t

我在zip文件中看到了一些不寻常的东西。
我有两个
.txt
文件,然后在我的应用程序中通过
java.util.zip(ZipoutStream,ZipEntry…
压缩这两个文件,然后通过浏览器作为可下载的zip文件返回。
一个文件包含的数据是数据库blob,另一个是
StringBuffer
。我的blob txt文件大小为10 mb,我的
StringBuffer
txt文件大小为15 mb,但当这些文件压缩时,blob txt zip文件的大小大于
StringBuffer
txt文件,尽管它包含较小的txt文件。
发生这种情况的原因是什么?

  • StringBuffer和(从Java5开始)StringBuilder类只存储 字符数据加上当前长度的缓冲区(不带 字符串的附加偏移量和哈希代码字段),但该缓冲区 可能大于放置在其中的实际字符数
  • Java字符占用两个字节,即使您使用它们来存储 无聊的旧ASCII值将适合一个字节
      • StringBuffer和(从Java5开始)StringBuilder类只存储 字符数据加上当前长度的缓冲区(不带 字符串的附加偏移量和哈希代码字段),但该缓冲区 可能大于放置在其中的实际字符数
      • Java字符占用两个字节,即使您使用它们来存储 无聊的旧ASCII值将适合一个字节
      您的BLOB(二进制大对象)可能包含非文本的数据,并且与文本一样可压缩。例如,它可能包含一个图像

      如果您还不知道blob包含什么,可以使用hexdump程序查看它。

      您的blob(二进制大对象)可能包含的数据不是文本,并且与文本一样可压缩。例如,它可能包含一个图像


      如果您还不知道blob包含什么,可以使用hexdump程序查看它。

      谢谢,但是blob不包含任何图像或txt以外的任何数据。对于大小差异较小的2个blob,例如8 mb,面临类似问题,但这两个blob的zip文件的大小差异超过20 mb。请注意,这两个文件都是管道分隔的文本文件。感谢anon,但blob不包含任何图像或txt以外的任何数据。两个blob的大小差异很小,例如8 mb,但这两个blob的zip文件的大小差异在20 mb以上,因此面临类似问题。请注意,这两个文件都是管道分隔的文本文件。