我正在尝试获取一个大约 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 以外的东西?