我想知道是否有可能通过独立的块来压缩任意文件(或文件夹,或任何其他文件结构),然后通过将它们串联在一起获得有效的归档文件(例如gzip)。一些要求:
看来要实现这一点,我需要先创建一个存档头,然后将压缩后的块附加到其上https://tools.ietf.org/html/rfc1952,但是我不确定标准Java utils或3rd是否支持它政党图书馆。有人对从哪里开始有任何想法吗?
一些背景: 我有一个客户端服务器应用程序,允许用户将文件上传到云存储。通过REST API进行通信,客户端将负责将文件划分为多个块,并一一上传。可以在浏览器中进行压缩,但是我想知道是否可以将该负载移动到后端。
答案 0 :(得分:0)
您可以为tar + gzip尝试以下操作:
Maven依赖项:
BaseHuman
要压缩成块的Java代码:
public int MathLevel
{
get => user.Skills [0].Level;
set
{
user.Skills [0].Level = value;
OnPropertyChanged("MathLevel");
}
}
将这些代码块合并为单个存档的Java代码:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.18</version>
</dependency>
答案 1 :(得分:0)
是的。根据标准(RFC 1952),串联的gzip文件是有效的gzip文件。 gzip当然可以解决这个问题。
您应该担心那里的某些代码可能不支持它,因为并置gzip成员并不常见。如果您想超级安全,可以将gzip文件合并为一个gzip成员,而无需重新压缩。但是,您确实需要通读所有压缩的数据,以有效地在内存中对其进行解压缩(这仍然比压缩要快得多)。您可以在gzjoin.c中找到一个示例。