- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 java.util.ZipOutputStream 类压缩文本文件。我在互联网上找到了两个示例来解释如何做到这一点。这使我想到了如下所示的两种可能的实现。虽然这两种方法都会生成“健康的 zip 文件”,但我的问题是每次运行时文件的二进制内容都略有不同(大约第 10 个字节)。有人知道吗
这是我当前的代码:
public byte[] getZipByteArray(String fileName) throws IOException
{
byte[] result = new byte[0];
byte[] buffer = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry ze = new ZipEntry(fileName);
zos.putNextEntry(ze);
InputStream inputStream = ZipCompression.class.getResourceAsStream(fileName);
int len;
while ((len = inputStream.read(buffer)) > 0)
{
zos.write(buffer, 0, len);
}
zos.closeEntry();
zos.close();
result = baos.toByteArray();
return result;
}
public byte[] ZipByteArrayBuffered(String fileName) throws IOException
{
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream);
ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream);
File file = new File(fileName);
InputStream fileInputStream = ZipCompression.class.getResourceAsStream(file.getName());
zipOutputStream.putNextEntry(new ZipEntry(file.getName()));
IOUtils.copy(fileInputStream, zipOutputStream);
fileInputStream.close();
zipOutputStream.closeEntry();
if (zipOutputStream != null)
{
zipOutputStream.finish();
zipOutputStream.flush();
IOUtils.closeQuietly(zipOutputStream);
}
IOUtils.closeQuietly(bufferedOutputStream);
IOUtils.closeQuietly(byteArrayOutputStream);
return byteArrayOutputStream.toByteArray();
}
最佳答案
字节 10 开始文件修改日期,因此这总是不同的。请参阅Wikipedia了解 zip 文件格式的详细信息。
关于java - 使用 ZipOutputStream 压缩文件会产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28496206/
我可以压缩文件,但内容错误......例如 - a.txt 中的内容: !"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc
我希望能够通过网络读取多个数据流并将文件写入网络以组合所有这些多个文件。 由于文件可能非常大,我不想做任何本地IO文件操作,而是对数据流进行操作。从网络读取流,将流以 zip 格式写入网络。 我正在尝
我有两个例子: 示例 1: try (ByteArrayOutputStream baous = new ByteArrayOutputStream(); FileOutputStre
我正在使用 ZipOutputStream创建 ZIP 文件。它工作正常,但 Javadoc 非常稀疏,所以我对 ZipOutputStream 的特性有疑问: 支持的最大文件大小是否有限制?对于 Z
我试图通过 ZipOutputStream 输出数据,但生成的文件未压缩。这是在 Windows 7 下。这是一个示例: import java.io.*; import java.nio.file.
我使用 ZipOutputStream 创建 zip 文件。我把一个文件放在zip中(文件和zip都在同一个目录),但是文件是用完整路径存储的(C:\TEMP\file.xml),如何用相对路径或没有
我需要压缩来自一个流的数据并将压缩数据放入另一个流。下面是操作文件的代码(MyOutputStream 是一个用于调试目的的简单 FileOutputStream 包装器)。此代码工作正常。
我有点困惑。我知道空 zip 是不合法的。但是这个示例片段呢: ZipOutputStream zos = null; try { zos = new ZipOutputStream(new
我想使用 java.util.ZipOutputStream 类压缩文本文件。我在互联网上找到了两个示例来解释如何做到这一点。这使我想到了如下所示的两种可能的实现。虽然这两种方法都会生成“健康的 zi
我想创建 zip 文件。文件将包含导出的 Preferences 和 Serialized 对象。但是当我尝试替换 zip 存档中的对象时,保存的首选项消失了。如何解决这个问题? import jav
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我必须上传一个zip文件到ftp服务器,这里的zip文件也是动态构建的。 import java.io.File; import java.io.FileInputStream; import jav
我尝试用 DeflaterOutputStream 压缩一个字符串并用 base64 转换输出以将结果保存在另一个字符串中 public static String compress(String s
我正在使用 Java7 编写代码,并使用 try-with-resources 功能。当我创建 ZipOutputStream 的实例时。通过这样做,我不再需要在finally block 中关闭流。
我正在尝试使用 MockitoJUnitRunner 编写 JUnit。我将文件 ID 传递给我的函数,该函数从云下载文件并返回 zip 文件作为下载。这是我的代码 public void getLo
我的 bean 类中有以下代码块 - HttpServletResponse response = (HttpServletResponse) getFacesContext().getExterna
这真的是一个由两部分组成的问题。 前言:我用WinRAR压缩文件。它为您提供了仅压缩某些文件的选项。我可以按文件扩展名进行过滤,例如,JPEG 文件不会被压缩,而其他文件会被压缩。 这可以用一般的 Z
ZipOutputStream 仅压缩文件夹中的文件。我也想压缩子文件夹。我怎样才能做到这一点? 最佳答案 您必须递归地探索您的目录才能添加 zip 中的所有文件。 如果你愿意,可以看看这个小 hel
我有一个要返回给浏览器的 ZipOutputStream。我想要的体验是用户点击一个 anchor 标签,然后为我有的ZipOutputStream 显示一个文件下载提示。 如何将 ZipOutput
我正在使用此处描述的技术创建一个 zip 文件: http://info.michael-simons.eu/2008/01/21/using-rubyzip-to-create-zip-files-
我是一名优秀的程序员,十分优秀!