在Java中重置连接后恢复流式GZIP文件

在Java中重置连接后恢复流式GZIP文件,java,compression,streaming,gzip,gzipinputstream,Java,Compression,Streaming,Gzip,Gzipinputstream,假设我的应用程序需要在网络上传输100 GB+GZIP的压缩文件。我假设,由于连接问题,这些文件可能常常无法在一次尝试中传输。因此,我正在寻找一种方法,从它失败的地方恢复流媒体。我知道GZIP开箱即用不允许从文件中间进行流式传输。但我假设它具有可以序列化的状态。然后有了那个状态,就可以将GZIP读取器恢复到故障前的状态,并从故障点继续流式处理 如果您有任何关于如何实现这一目标的经验/想法,我将不胜感激。我看过GZIPInputStream,最终在充气器类中遇到了本机方法,并阅读了RFC。如何解决

假设我的应用程序需要在网络上传输100 GB+GZIP的压缩文件。我假设,由于连接问题,这些文件可能常常无法在一次尝试中传输。因此,我正在寻找一种方法,从它失败的地方恢复流媒体。我知道GZIP开箱即用不允许从文件中间进行流式传输。但我假设它具有可以序列化的状态。然后有了那个状态,就可以将GZIP读取器恢复到故障前的状态,并从故障点继续流式处理


如果您有任何关于如何实现这一目标的经验/想法,我将不胜感激。我看过GZIPInputStream,最终在充气器类中遇到了本机方法,并阅读了RFC。

如何解决一个大问题?把它们分成小块。这是我对这个问题的初步看法,我不知道文件类型、网络延迟、传输频率等方面的很多背景

这就是我要做的

  • 把那个文件分成很小的块。为了简单起见,每个1GB
  • 对这些文件进行唯一重命名,也可以按顺序重命名。示例{uuid}-1、{uuid}-2等
  • 将此元数据保存到数据存储中。基本上,您希望跟踪您创建的所有小块。下面是元数据的外观
    [{
    “文件名”:“b006194c-80ba-11e8-adc0-fa7ae01bbebc--1”,
    “大小”:“1 GB”,
    “状态”:“完成”
    },
    {
    “文件名”:“dc903236-80ba-11e8-adc0-fa7ae01bbebc--2”,
    “大小”:“1 GB”,
    “状态”:“正在进行”
    }
    
    ]
    GZIP本地发送文件,然后使用FTP范围的HTTP发送。我无法控制这些文件,而是将它们作为URL获取。可以说我的应用程序不能处理大于(比如)100GB的文件,但理想情况下我更愿意将此限制提高。我的应用程序只使用文件,我无法控制生成它们。我将它们作为URL获取,所以要拆分它们,我需要首先下载它们。原来的问题就发生在这里。我不知道。然而,如果没有一个适当的机制来说明人们如何通过编程方式检索它们,我就不会把这么大的文件放在第一位。我想说的是,例如,如果要在AmazonS3中存储100GB的文件,我知道我将有一个SDK来部分检索它们。这是演示如何操作的文档。如果你能和储存它的人合作,看看你是否能找到更好的方法。