gpt4 book ai didi

java - 在 Java 中将大文件(>5GB)输出到 .zip 存档

转载 作者:行者123 更新时间:2023-11-30 04:24:47 25 4
gpt4 key购买 nike

我正在尝试获取一个大约 6GB 的大型制表符分隔 .txt 文件,并使用 JAXB api 将其转换为 .xml 文件。这部分工作正常,但是当我尝试使用 ZipOutputStream 将该 .xml 放入 .zip 中时,当我尝试查看它后 .xml 会损坏(但它适用于较小的文件)。

是否有其他方法可以做到这一点,或者在进程运行后手动进行压缩会更好吗?下面是我在尝试制作 .zip 文件时使用的一些代码。

IFSFile source = null;
IFSFileOutputStream target = null;
ZipOutputStream targetZip = null;

String targetName = "C:/test.zip";

source = new IFSFile(as400, sourceName);
BufferedReader readBuffer = new BufferedReader(new IFSFileReader(source));

target = new IFSFileOutputStream(as400, targetName, IFSFileOutputStream.SHARE_NONE, false);
targetZip = new ZipOutputStream(target);

ZipEntry ze = new ZipEntry("test.xml");
targetZip.putNextEntry(ze);

//JAXB stuff omitted, seems to be working as no problems with smaller files
while ((strRead = readBuffer.readLine()) != null) {
currentRecord = new stuff;
marshaller.marshal(currentRecord, targetZip);
}

targetZip.closeEntry();
targetZip.close();
readBuffer.close();

在寻找大小限制时,我发现如果 .zp 最终大于 4GB,它就会被损坏,但我认为不会。我是否做错了什么或者我应该使用 ZipOutputStream 以外的其他东西来实现此目的?

最佳答案

使用GZIPOutputStream相反,它是 java.util 的一部分(因此标准),并且在所有情况下都具有更好的压缩(据我所知),并且肯定会处理大于 4Gb 的文件。

我认为 ZipOutputStream 可能不是 ZIP64 的实现,如果是的话,原始 ZIP 格式有 4Gb 限制,因为这是 32 位文件系统上的最大值。

关于java - 在 Java 中将大文件(>5GB)输出到 .zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com