我有一个巨大的json文件(NEW_LINE_TERMINATED_JSON),需要将其压缩为gz文件。目前,我正在使用GZIPOutputStream进行此操作。但是现在我希望输出文件的最大大小为4GB,否则创建一个新的独立gz文件。例如
0001.gz-4GB
0002.gz-4GB
0003.gz-2GB
问题是我不知道压缩时未压缩的数据有多大。也许我可以估计一条未压缩行的大小,但是由于文件不允许大于4GB,因此我的估计需要非常保守。
我还考虑过压缩文件,如果大于4GB,则将未压缩的行分成两半,然后再次压缩,依此类推。但这似乎效率很低。
我只能在行结束后拆分。什么是处理此问题的好方法?