CN102542013B - 实现在zip存档中的对象内的随机访问 - Google Patents
实现在zip存档中的对象内的随机访问 Download PDFInfo
- Publication number
- CN102542013B CN102542013B CN201110423067.2A CN201110423067A CN102542013B CN 102542013 B CN102542013 B CN 102542013B CN 201110423067 A CN201110423067 A CN 201110423067A CN 102542013 B CN102542013 B CN 102542013B
- Authority
- CN
- China
- Prior art keywords
- block
- zip archive
- zip
- merogenesis
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Abstract
可以使用zip存档的中心目录中存储的对象地址以随机访问方式提取存储于zip存档中的对象(而未涉及存储于zip存档中的其它对象)。然而zip存档经常提供不足以实现随机访问对象内的数据的信息。可以通过将对象分割成具有分节大小的分节并且在zip存档中包括如下块表来提供这一能力,该块表针对相应分节指定对应块的块大小。zip存档提取器可以通过使用块表以计算包括所选部分的块的地址并且仅提取那些块来实现对该对象的随机访问。可以通过在zip存档的中心目录的zip扩展内包括块表来保存zip存档与其它zip存档提取器的向后兼容性。
Description
背景技术
在计算领域内,许多场景涉及对使用压缩技术在zip存档内压缩的对象的存储。zip存档包括对象的压缩版本(在每个版本之前为描述对象的局部标头(例如文件名、为对象选择的压缩技术和压缩大小))的级联并且以包括一组如下集中标头的中心目录为结束,这些集中标头标识局部标头的地址。为了从zip存档提取对象,zip存档提取器可以读取中心目录、标识对象的局部标头在zip存档内的地址、在zip存档内寻找经压缩的数据的地址并且应用压缩技术以展开压缩对象。以这一方式,zip存档提取器能够提供对存储于zip存档内的对象的随机访问;例如访问zip存档中的特定对象未涉及zip存档中的其它对象。
发明内容
提供这一发明内容以简化形式介绍下文在具体实施方式中进一步描述的概念的选择。这一发明内容并非为了标识要求保护的主题内容的关键因素或者实质特征、也并非用来限制要求保护的主题内容的范围。
zip存档的格式促进对特定zip存档内的特定对象的随机访问。然而zip存档的格式未实现在存储于zip存档中的特定对象内的随机访问而是仅允许在压缩数据内的依次访问。例如zip存档提取器可以能够提取特定对象而未提取其它对象、但是经常不能访问对象的未在对象的开头开始的特定部分。这一缺陷可能在一些场景中不利。例如媒体对象可以用压缩方式存储于zip存档中,并且媒体再现应用(比如流媒体应用)可以努力在zip存档内寻找媒体对象内的特定位置(例如视频记录的特定时间码或者帧或者记录为单个对象的唱片特定轨道)。然而由于用可变压缩比压缩对象的不同部分(基于在该部分中包括的数据的规律),zip存档提取器可能不能标识对象的压缩版本内的所选部分在zip存档中的位置。实际上,zip存档提取器可能不得不依次展开对象的压缩数据直至到达所选部分。缺乏关于对象压缩的信息因此包括在调用zip存档提取器以访问存储于zip存档中的对象的随机选择的部分时的低效率。
这里呈现用于实现在存储于zip存档中的对象内的随机访问的技术。根据这些技术,针对将压缩到zip存档中的对象,这些技术的一个实施例可以首先选择如下分节(section)大小,该分节大小在对象的未压缩版本内限定可以随机寻找的周期位置。例如,如果分节大小限定为64千字节,则zip存档提取器可以能够随机寻找对象内的任何64千字节边界而对象保持压缩。这一选择因此在概念上将对象分割成固定大小的分节的序列。zip存档生成器可以在调用压缩技术以压缩对象之时记录与每个分节对应的压缩数据块的大小。zip存档生成器然后可以在zip存档内存储如下块表(block table),该块表针对相应对象表明包括对象压缩版本的块的块大小序列。
当接收对访问对象的所选部分的请求时,zip存档提取器可以标识对象的其中所选部分开始的未压缩分节。zip存档提取器然后可以检查块表以标识如下块的块大小,这些块直至与所选部分对应的块。zip存档提取器然后可以读取这个块(以及与压缩对象的也包括该部分的其它分节对应的任何后续块)并且可以调用压缩技术以展开这些块。可以修整以这一方式提取的分节以匹配于对象的指定部分,并且可以响应于请求来提供未压缩的数据。以这一方式可以实现对该对象的任意所选部分的随机访问。另外可以添加这一功能而通过在zip存档的zip扩展中存储块表来保存zip存档的向后兼容性(例如zip存档能够由不支持这一特征的zip存档生成器和zip存档提取器恰当解译)。例如,如果在zip存档的中心目录的zip扩展中包括块表,则支持这一特征的zip存档提取器可以读取和利用块表以提供对包含于其中的对象的随机访问,而不支持这一特征的zip存档提取器可以忽略不可用的zip扩展并且可以用别的方式能够利用zip存档。以这一方式,可以提供对存储于zip存档中的对象的内容随机访问的能力而未削弱zip存档的向后兼容性。
为了实现前述和有关目的,以下描述和附图阐述某些示例方面和实施方式。这些表明可以对一个或者多个方面进行实施的各种方式中的仅少数方式。本公开内容的其它方面、优点和新颖特征从在与附图结合考虑时的下文具体描述中将变得清楚。
附图说明
图1是以存储于zip存档中和/或从该zip存档提取的一组对象为特征的示例场景的图示。
图2是根据这里给出的技术的以存储于具有块表的zip存档中和/或从该zip存档提取的一组对象为特征的示例场景的图示。
图3是图示根据这里给出的技术的生成包括至少一个对象的zip存档的示例方法的流程图。
图4是图示根据这里给出的技术从具有块表的zip存档提取至少一个所选对象的所选部分的示例方法的流程图。
图5是包括处理器可执行指令的示例计算机可读介质的图示,这些处理器可执行指令被配置成实施这里阐述的技术提供中的一种或者多种技术提供。
图6是以在用压缩技术压缩的一组对象之中使用块表来计算块的块地址为特征的示例场景的图示。
图7是以在zip存档的中心标头中包括的块跳转zip扩展为特征的示例场景的图示。
图8是以zip存档中的压缩对象的地址对准和重新排序为特征的示例场景的图示。
图9图示其中可以实施这里阐述的提供技术中的一种或者多种技术的示例计算环境。
具体实施方式
现在参照附图描述要求保护的主题内容,在附图中,相似标号用来通篇指代相似要素。在下文描述中,为了说明而阐述许多具体细节以便提供对要求保护的主题内容的透彻理解。然而可以清楚无这些具体细节也可以实现要求保护的主题内容。在其它实例中,以框图形式示出结构和设备以便有助于描述要求保护的主题内容。
在计算领域内,许多场景涉及生成如下zip存档,该zip存档包括根据一种或者多种压缩技术压缩的一组对象。用户或者过程可以指明一组对象并且调用如下zip存档生成器,该zip存档生成器可以检查相应对象、基于对象的性质选择适当压缩技术并且调用该压缩技术以生成对象的压缩版本。针对一些对象(例如包括已经压缩的数据的对象),使用任何附加压缩技术可能实现非实质或者负面压缩并且以徒劳的计算为代价,因而对象可能以未压缩状态存储于存档中。zip存档生成器生成如下zip存档,该zip存档针对各个对象包括局部标头(该局部标头描述对象和利用的压缩技术)和压缩对象并且以包括一组如下中心标头的中心目录为结束,这些中心标头同样描述包含于zip存档中的对象(包括对象的局部标头的地址和用于每个对象的压缩技术(或者无用于在未压缩状态中存储于zip存档中的对象的压缩技术))。
zip存档生成器可以用以下方式从zip存档提取压缩对象。首先,zip存档提取器读取中心目录以标识对象的局部标头在zip存档内的地址、对象的压缩大小和用来在zip存档中存储对象的压缩技术。zip存档提取器然后寻找局部标头并且读取局部标头的内容以便去往用于对象的压缩数据开始的地址。zip存档提取器然后可以读取用于对象的压缩数据并且可以对压缩数据调用压缩技术以重新生成未压缩对象。以这一方式并且由于中心目录(该中心目录指定zip存档中包括的对象的局部标头的位置)在zip存档内的可标识位置,zip存档的格式使zip存档提取器能够提取单个对象或者对象子集而无需检查或者提取zip存档的其它对象。
图1呈现了以将存储于zip存档中的第一对象12(“Report.doc”)和第二对象12(“Image.jpeg”)为特征的示例场景10的图示。zip存档生成器16可以向每个对象12应用压缩技术20以生成压缩对象28并且可以在zip存档14中存储压缩对象28。每个对象12可以包括以可以影响数据压缩的特定方式格式化的数据。例如,包括第一对象12的数据可以比较而言未压缩,从而向第一对象12应用压缩技术20可以获得大小明显更小的压缩对象28。然而可以已经压缩第二对象12的数据,从而向第二对象12应用压缩技术20可以生成如下压缩对象28,该压缩对象未明显更小(或者可能由于压缩技术20的开销而甚至大于未压缩对象),却只有通过展开该压缩对象以重新生成第二对象12才可以利用该压缩对象,由此消耗计算资源而无明显益处。因而针对第一对象12,zip存档生成器16可以在zip存档14中存储压缩对象28,但是针对第二对象12,zip存档生成器16可以代之以按照未压缩格式存储第二对象12。另外,zip存档生成器16可以利用多种压缩技术20(每种压缩技术可以擅长压缩特定类型的数据)并且可以基于包含于每个对象12中的数据的性质选择用于该对象的适当压缩技术。
为了生成zip存档14,zip存档压缩器16存储压缩对象28的序列,在每个压缩对象之前为如下局部标头26,该局部标头描述压缩对象28的各种性质(例如对象12的文件名(可选地包括对象12在对象12的存档集合(比如对象12将在展开时所在的文件夹或者子文件夹)内的位置))、用来生成压缩对象28的压缩技术20和对象12的压缩大小。此外,zip存档压缩器16向压缩对象28的序列添加包括如下中心标头32的序列的中心目录30,每个中心标头同样描述压缩对象28和局部标头26在zip存档16内的地址。相反,为了从zip存档14提取特定对象12,zip存档提取器18检查中心目录30并且对用于对象12的中心标头32进行定位。zip存档提取器18然后寻找用于压缩对象28的局部标头26的局部标头地址34并且前进经过局部标头26去往包括压缩对象28的数据开始的开始地址36。zip存档提取器18然后调用压缩器技术20以展开压缩对象28以便重新生成对象12。以这一方式,zip存档生成器16和zip存档提取器18互操作以实现在zip存档14中压缩对象12和从中提取。
在图1的示例场景10中给出的技术的具体优点涉及zip存档提取器18有能力实现对存储于zip存档14中的压缩对象28的随机访问。例如第一压缩对象28在zip存档14中存储于第二压缩对象28之后,但是为了提取第一对象12,zip存档提取器18不必检查或者提取第二压缩对象28。通过参考存储于中心目录30中的用于第一压缩对象28的中心标头32,zip存档提取器18可以标识用于第一压缩对象的本地标头地址34并且可以在zip存档14内直接寻找这一局部标头地址34。这一配置可以例如有利于实现以相同方式对存储于zip存档14中的任何对象12的迅速访问而无论压缩对象28如何存储于zip存档14内以及何处并且无论存储于压缩对象28之前和之后的压缩对象28的数目和大小如何。由于zip存档14可以升级至包含许多对象12和/或可以包含很大压缩对象28(可能跨越至若干千兆字节 ),所以有能力随机访问任何压缩对象28而未考虑zip存档14中的其它压缩对象28可以明显提高zip存档提取器18的效率。
然而有能力随机访问存储于zip存档14中的对象12不包括有能力在对象12内随机访问而是可能仅包括充分信息以允许依次访问包括压缩对象28的数据。尽管包含于zip存档14的中心目录30中的信息使zip存档提取器18能够迅速和高效标识包括压缩对象28的数据的开始地址36,但是这一信息未使zip存档提取器18能够在zip存档14内寻找与压缩对象28内的特定位置对应的地址以便提取对象12的特定部分。另外,zip存档提取器18可能由于压缩技术20的可变压缩率而不能推断或者计算该地址。针对特定对象12,对象12的不同分节22可能用不同紧致程度压缩,每个紧致程度获得块大小可变的压缩数据块24。例如在图1的示例场景10中,第一对象12可以包括大小均匀的四个数据分节22。然而可以通过压缩技术20将每个分节22压缩成块大小可变的块24;例如第一分节22可以压缩成具有最适度压缩比50%的第一块24,而第二分节22可以完全未压缩并且可以获得压缩比为0%(例如块大小与第二分节22的分节大小相等)的第二块24。相反,包括图案高度均匀的数据的第四分节22可以紧密地压缩成压缩比为89%的第四块22。尽管块22的可变大小造成高压缩程度,但是这些可变大小也阻止zip存档提取器18推断或者计算与对象12的特定分节22对应的特定块22在压缩对象28内的位置。
无能力实现压缩对象28的所选部分的随机访问对于压缩技术20可能引起明显缺点。作为第一例子,如果仅需压缩对象28的小部分(例如存储于第一zip存档14内的对象12,该第一zip存档又存储于第二zip存档14中),zip存档提取器18可能不得不从zip存档14提取整个压缩对象28并且从中提取所选部分。例如,如果所选部分仅为压缩对象28的小部分,则这一过程低效率并且可能涉及大量计算资源。作为第二例子,zip存档18可以由如下流过程调用,该流过程提供如下数据的数据流,该数据包括可以存储于zip存档14内的对象12(例如具有关键帧的视频记录)。然而流过程可能不能在随机访问的基础上访问zip存档14内的压缩对象28的所需部分而是可能代之必须调用zip存档提取器18以提取整个压缩对象28直至待用流发送的数据的所需位置。例如当流过程涉及对访问压缩对象28内的特定部分的序列的连串请求时可能反复地出现这一低效率。
这里呈现用于在zip存档14内存储对象12的技术,通过在zip存档14内包括使zip存档提取器18能够在压缩对象28内计算与特定分节22对应的块24的地址的信息,该zip存档14使zip存档提取器18能够实现对存储于压缩对象28内的所需数据部分的随机访问。为了实现这一能力,zip存档生成器16将对象12分成为具有分节大小42的规则大小的分节22(例如八千字节的分节22)。zip存档生成器16然后可以跟踪通过压缩技术20生成的并且与这样的分节22对应的块24的块大小并且可以在zip存档14内存储这一信息作为如下块表44,该块表包括块24的块大小的列表。zip存档提取器18然后可以利用这一信息以在压缩对象28内计算与对象12的任何分节22对应的块24的地址。zip存档提取器18可以在zip存档14内寻找这一地址、仅提取这一块24并且调用压缩技术20以展开块24以重新生成分节22。以这一方式,配置zip存档生成器16以生成和存储用于一个或者多个压缩对象28的块表使zip存档提取器18能够提取压缩对象28的任何特定块24而未考虑压缩对象28的其它块24、由此实现向压缩对象28中的随机访问。
图2呈现以应用这些技术以实现向存储于zip存档14中的压缩对象28的特定部分中的随机访问为特征的示例场景的图示40。在这一示例场景40中,zip存档生成器16可以被调用以生成zip存档14(该zip存档存储对象12的压缩版本)并且可以调用压缩技术20以压缩对象12。然而在这一示例场景40中,zip存档生成器16也标识如下分节大小42,该分节大小指定对象12内的分节22的大小。在调用压缩技术20压缩对象12之时,zip存档生成器16可以记录与每个分节22对应的块24的块大小。zip存档生成器16因此可以生成块表44(该块表包括用于压缩对象28的相应块24的块大小46的序列)以及一些附加信息(比如用来压缩块24的压缩技术20和与块24对应的每个分节22的分节大小42)。zip存档生成器16可以在zip存档14中存储包括块表44。zip存档提取器18可以利用块表44以在压缩对象28内标识与对象12的特定分节22对应的特定块24的地址。例如为了访问zip存档14中的对象12的第四分节22,zip存档提取器18读取中心目录30、对用于压缩对象28的中心标头32定位并且从中心标头32读取压缩对象28的局部标头地址34。zip存档提取器18然后寻找压缩对象28的本地标头26的本地标头地址34并且前进经过本地标头26去往用于压缩对象28的压缩数据的开始地址36。然而zip存档提取器18可以参考块表44以标识在第四块24之前的块24的块大小46而不是依次访问压缩数据。例如zip存档提取器18可以简单地将在第四块24之前的前三块24的块大小46相加从而获得用于这些在先块24的总块大小14,271字节。zip存档提取器18然后可以从压缩数据的起始地址去往这一位置,该位置代表第四块24的开头。zip存档提取器18然后可以提取第四块24并且调用压缩技术20以展开第四块24、由此重新生成第四分节22。以这一方式, zip存档提取器18可以根据这里给出的技术利用由zip存档生成器16生成的块表44以实现向存储于zip存档14中的对象12的分节22中的随机访问。
如在图2的示例场景40中进一步图示的那样,块表44可以在zip存档14中存储于如下zip扩展内,该扩展包括向zip存档14添加的额外一组如下信息,该信息可以由一些zip存档生成器16和/或zip存档提取器18利用以便实现附加特征、但是其它zip存档生成器16和/或zip存档提取器18可以忽略该信息而不影响从zip存档14提取对象12的能力。已经用许多方式明显改进二十多年前首次实施的zip存档格式以实现新特征(比如压缩对象28的附加压缩类型和加密(例如使用口令作为对称加密密钥))以及包含于zip存档14中的压缩对象28的名称、类型和结构。然而zip存档在计算世界中的普遍存在已经造成在许多平台上提供的广泛多种zip存档生成器16和zip存档提取器18。因此希望以向后兼容方式实施zip存档的改进,从而包括现代改进的zip存档14却可以由前几代zip存档生成器16和zip存档提取器18正确地解析。为了实现这样的改进而不包括zip存档格式的向后兼容性,可以向局部标头26、中心标头32和/或在中心标头32之后的中心目录30添加zip存档扩展文47。zip扩展48的数据以包括zip扩展的类型标识符(例如对包含于zip扩展中的数据的性质和用途的指示)的两个字母数字字符为开始,并且未识别类型标识符的zip存档生成器16和/或zip存档提取器18可以忽略zip扩展48。
因而在图2的示例场景40中,在zip存档14中包括块表44而向中心目录30添加zip扩展48。根据这里给出的技术配置的zip存档生成器16和/或zip存档提取器18可以识别zip扩展48的类型标识符,因此可以解析和利用其中包含的块表44,而未根据这里给出的技术配置的zip存档生成器16和/或zip存档提取器18可以识别zip扩展48的类型标识符,因此可以忽略块表44而未失去压缩和/或展开zip存档14的能力。以这一方式,可以用以下方式在zip存档14中包括块表44,该方式维持zip存档14与未根据这里给出的技术配置的zip存档生成器16和zip存档提取器18的向后兼容性。然而其它技术也可以用来在zip存档14中包括块表44而又维持向后兼容性。作为一个这样的例子,块表44可以表示为具有如下保留文件名的存储对象,该文件名指示对象的性质,从而根据这一技术配置的zip存档提取器18可以按照块表44的保留名称识别块表44并且相应地利用它,而其它zip存档提取器18可以如在存档中包括的外加(extraneous)对象那样简单地提取。
图3呈现这些技术的第一实施例,该实施例图示为生成如下zip存档14的示例方法50,该zip存档14压缩至少一个如下对象12,该对象包括具有分节大小42的分节22。示例方法50可以例如实施为在具有处理器和压缩技术20的设备的存储器部件(例如系统存储器电路、硬盘驱动器的母盘、固态存储设备或者磁盘或者光盘)中存储的如下软件指令集,这些指令在由设备的处理器执行时使处理器执行这里给出的技术。示例方法50始于52并且涉及在处理器上执行54指令。具体而言,指令被配置成针对相应对象12使用压缩技术20将来自具有分节大小42的分节22的对象12压缩56成分别具有块大小44的块24。指令也被配置成生成58生成如下zip存档14和块表44,该zip存档14针对存储于zip存档14中的相应对象12包括对象12的局部标头26和块24,该块表44指定压缩技术20并且针对用压缩技术20压缩的相应对象12指定压缩对象28的相应块24的块大小44。以这一方式,图3的示例方法50使设备的处理器将对象12压缩成如下zip存档14、因此在60结束,该zip存档实现在存储于其中的对象12内的随机访问。
图4呈现这些技术的第二实施例,该第二实施例图示为满足读取存储于zip存档14中的所选对象12的至少一个所选分节22的请求的示例方法70。可能已经用压缩技术20压缩所选对象12,其中对象12的具有分节大小42的特定分节2存储为分别具有块大小46的块24。另外,这一示例方法70可以应用于具有如下块表44的zip存档14,该块表指定用于zip存档14内存储的至少一个对象22的相应块24的块大小46。示例方法70可以例如实施为在具有处理器和压缩技术20的设备的存储器部件(例如系统存储器电路、硬盘驱动器的母盘、固态存储设备或者磁盘或者光盘)中存储的如下软件指令集,这些指令在由设备的处理器执行时使处理器执行这里给出的技术。示例方法70始于72并且涉及在处理器上执行74指令。具体而言,指令被配置成使用zip存档14的中心目录30来标识76所选对象12的块24的开始地址36。指令也被配置成使用块表44和开始地址36来标识78与所选分节22对应的块24的相应块地址。指令也被配置成读取80压缩对象28在块地址的所选块24。指令也被配置成使用压缩技术20来展开82所选块24以生成至少一个所选分节22。指令也被配置成提供84至少一个所选分节22以满足请求。以这一方式,示例方法70根据这里给出的技术实现向存储于zip存档14中的压缩对象28中的随机访问以取回对象12的所选部分、因而在86结束。
又一实施例涉及一种包括配置成应用这里给出的技术的处理器可执行指令的计算机可读介质。这样的计算机可读介质可以例如包括对如下计算机可读指令集编码的涉及有形设备的计算机可读存储介质(比如存储器半导体(例如利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)和/或同步动态随机存取存储器(SDRAM)技术的半导体)、硬盘驱动器的母盘、闪存设备或者磁盘或者光盘(比如CD-R、DVD-R或者软盘)),这些计算机可读指令在由设备的处理器执行时使设备实施这里给出的技术。这样的计算机可读介质也可以包括(作为与计算机可读存储介质不同的一类技术)各种类型的通信介质(比如可以通过各种物理现象(例如电磁信号、声波信号或者光学信号)并且在各种有线场景(例如经由以太网或者光纤线缆)和/或无线场景(例如无线局域网(LAN)(比如WiFi)、个人区域网络(PAN)(比如蓝牙)或者蜂窝或者无线电网络)传播并且对如下计算机可读指令集编码的信号,这些计算机可读指令在由设备的处理器执行时使设备实施这里给出的技术)。
在图5中图示可以用这些方式设计的示例计算机可读介质,其中实施方式90包括计算机可读数据94编码于其上的计算机可读介质92(例如CD-R、DVD-R或者硬盘驱动器的母盘)。这一计算机可读数据94又包括配置成根据这里阐述的原理操作的计算机指令(96)集。在一个这样的实施例中,处理器可执行指令96可以被配置成执行一种生成包括一个或者多个压缩对象的zip存档的方法(比如图3的示例方法50)。在另一这样的实施例中,处理器可执行指令96可以别配置成实施一种用于生成包括一个或者多个压缩对象的zip存档的系统(比如图4的示例方法70)。这一计算机可读介质的一些实施例可以包括一种配置成存储以这一方式配置的处理器可执行指令的非瞬态计算机可读存储介质(例如硬盘驱动器、光盘或者闪存设备)。本领域普通技术人员可以设计许多这样的配置成根据这里给出的技术操作的计算机可读介质。
可以设计在许多方面上变化的这里讨论的技术,并且一些变化可以相对于这些和其它技术的其它变化而言呈现附加优点和/或减少缺点。另外,可以组合实施一些变化,并且一些组合可以以通过增效协作来增添优点和/或减少缺点为特征。变化可以并入于各种实施例(例如图3的示例方法50和图4的示例方法70)中以向这样的实施例赋予个别和/或增效优点。
可以在这些技术的实施例之中变化的第一方面涉及其中可以利用这样的技术的场景。作为第一变化,这些技术可以实施于许多类型的zip存档生成器16和/或zip存档提取器18(包括由用户和/或自动的过程调用的单独的可执行二进制文件、与作为自提取zip存档14的zip存档14一起包括的可执行二进制文件、存储系统(比如文件系统或者数据库系统)、服务器(比如网上服务器或者文件服务器)、媒体再现应用或者配置成压缩存储于存储设备上的对象的操作系统部件)中。作为这一第一方面的第二变化,可以利用许多类型的无损和/或有损压缩技术20,其中一些压缩技术20可以比其它压缩技术20更擅长压缩特定类型的数据。作为这一第一方面的第三变化,这些技术可以用来压缩zip存档14中的许多类型的对象12(包括文本文档、网络文档、图像、音频和视频记录、可解译脚本、可执行二进制文件、数据对象、数据库和数据库组件以及其它压缩的存档)。可以根据这里给出的技术有利地存储的特定类型的对象12是将以流方式再现的媒体对象。在这样的场合中,用户或者应用可以经常利用寻找操作以访问对象12的不同部分;并且如与依次访问技术(包括图1的示例场景10)比较,这里给出的技术实现的随机访问可以显著提高针对对象12的各种部分(特别是在后的部分)的访问速率。本领域普通技术人员可以设计许多这样的其中可以有利地利用这里给出的技术的场合。
可以在这些技术的实施例之中变化的第二方面涉及指定和使用块表44并且在zip存档14中存储块表44的方式。作为第一变化并且如在图2的示例场景40中所示,可以向中心目录30添加块表44作为zip扩展48,这可以例如有利于保持zip存档14的向后兼容性(从而未实施这里给出的技术的zip存档压缩器16和/或zip存档提取器18却可以利用zip存档14)。然而块表44的部分或者全部可以存储于zip存档14内的许多其它位置(包括压缩对象28的局部标头26和/或在中心目录30内的中心标头32)中。
作为这一第二方面的第二变化,可以在块表44内指定如下分节大小42,该分节大小指示对象12的如下分节22的大小,该分节被压缩成压缩对象28的每块24。可替换地,可以在zip存档42中的别处指定和/或可以从zip存档42省略分节22的大小。例如这些技术的一个实施例或者用来生成块24的压缩算法20可以总是使用标准分节大小42,并且在zip存档14内指定分节大小42可以是多余的。
作为这一第二方面的第三变化,可以用许多方式实现在块表44中对各种压缩对象28的块24的块大小46进行指定的方式。作为一个这样的例子,块表44可以指定特定压缩技术20、然后可以指定zip存档14内的用压缩技术20压缩的所有压缩对象28的块24的块大小46。另外,对象12可以按照特定对象顺序存储于zip存档14中,并且块表44可以根据对象顺序指定压缩对象14的块24的块大小46。这一例子可以例如有利于促进以如下紧凑和高效方式存储块大小46,该方式也实现计算块24在压缩对象28内的地址。此外,可以在如下块表46中包括多个压缩技术20,该块表可以包括用于不同压缩技术20的连串分节和根据压缩技术20存储于zip存档14中的压缩对象28的块大小46。
图6呈现根据这一第二方面的这一第三变化的以存储块24的块大小46的块表44为特征的示例场景100的图示。在这一示例场景100中,在zip存档14中包括并且按照特定对象顺序存储四个对象12。另外,以不同方式压缩对象12;例如根据“紧缩”压缩技术20存储第一、第三和第四对象12而第二对象12简单地存储于zip存档14中作为未压缩对象。每个压缩对象42因此可以与如下特定块大小序列102关联,该序列指定包括压缩对象28的块24的块大小46。块表44因此可以用以下方式指定块24的块大小46。首先,块表44可以指定特定压缩技术20和为了根据压缩技术20压缩对象14而选择的分节大小42。接着针对存储于zip存档14中的用压缩技术20压缩的每个对象12,块表44可以指定块大小序列102。具体而言,块表44可以包括如下块大小序列104,该序列包括按照与使用压缩技术20来压缩的对象12存储于zip存档14中的顺序相同的顺序这些对象12的块大小序列102的级联。例如块表44可以按照顺序指定第一压缩对象28、第三压缩对象28和第四压缩对象28(而非未用压缩技术20压缩的第二对象12)的块大小序列102。
如图6中进一步所示,zip存档提取器18可以使用这一块表44以逆方式标识所选对象12的所选块24的块地址。首先使用中心目录30,zip存档提取器18可以标识存储于zip存档14中的用压缩技术20压缩的对象12的对象顺序并且也可以记录存储于中心标头32中的对象12的未压缩大小。针对zip存档14中的在所选对象12之前的每个在先对象12,在存储于块表44中的块大小序列104内,zip存档提取器18可以前进经过用于在先对象12的块大小序列102。这可以例如通过根据在先对象12的未压缩大小(根据中心标头32)除以分节大小42计算针对在先对象12的块大小计数并且通过前进经过块大小序列104中的与块大小计数匹配的多个块大小24来实现。在这一前进结束时,zip存档提取器18可以已经针对压缩对象28中的第一对象24在块表44的块大小序列104内标识块大小46。zip存档提取器18然后可以通过在用于压缩对象28(该压缩对象存储于块表44的块大小序列102中的当前点)的块大小序列102中将在所选块24之前的块24的块大小46相加以计算所选块24的块偏移106来计算所选块24在压缩对象28的压缩数据内的块偏移106。zip存档提取器18然后可以在zip存档14内寻找压缩对象28的本地标头26的局部标头地址34、前进去往压缩数据的开始地址36并且进一步前进去往所选对象24在压缩对象28内的块偏移106。以这一方式,zip存档提取器18可以利用块表44以标识所选块24在存储于zip存档14中的压缩对象28内的块地址。然而本领域普通技术人员可以设计根据这里给出的技术生成、存储和使用zip存档24的块表44的许多方式。
可以在这些技术的实施例之中变化的第三方面涉及按照这里给出的技术对在zip存档14中包括的对象12压缩和/或展开的方式。作为这一第三方面的第一变化,可以用许多方式(比如由压缩技术20或者由请求生成zip存档14的用户或者自动化过程)指明分节大小42。取而代之,标准分节大小42可以被默认选择(例如64千字节的块大小)、因此可以由zip存档压缩器16和/或zip存档提取器18默认使用。
作为这一第三方面的第二变化,一些压缩技术20可以利用在压缩部分之间引用以实现更高压缩比和/或效率。例如压缩技术20可以压缩对象12的第一部分以生成涉及特定特性(比如可以用来将特定压缩部分翻译成频繁出现于对象12内的未压缩部分的词典)的块24。在压缩对象12的第二部分时,压缩技术20可以发现涉及一些相同特性;例如如果第二压缩部分与第一压缩部分相同或者相似,则可以在压缩时使用相同词典。然而压缩技术20的这一特征可能引起对象12的随机访问的低效率。例如,如果压缩对象28中的第一块24由第二块24、第三块24和第四块24中的每块引用,则对这些块24中的每块的个别随机访问也涉及访问第一块24(例如压缩技术20可以在努力展开每个块20之时发现引用)、由此引起对第一块24的另一随机访问并且削弱随机访问的吞吐量。因而这里给出的技术的一个实施例可以针对在块表44中表示的对象14指示压缩技术20禁用压缩技术的引用特征。更具体而言,实施例能够指示压缩技术20禁用在出现于不同块24中的第一压缩部分与第二压缩部分之间的引用,因为出现于相同块24中的压缩部分在相同块24内被一起取回而未破坏随机访问。这一禁用也可能造成效率更低的压缩、但是可以促进对每块24的随机访问。
作为这一第三方面的第三变化,可以响应于对访问特定对象部分的请求来出现对压缩对象28的展开和访问。然而请求的对象部分可能未精确地匹配于对象12的分节22的边界、但是可以在分节22的不同边界上开始和/或结束(例如完全落在分节22内或者与两个或者更多分节22重叠)。由于随机可访问的块24未实现向压缩对象28的块24中的每位编索引,所以可能必须涉及对外加数据的一些附加读取和展开。然而特别是在利用更小分节大小42时,压缩对象28的块24的随机可访问性可以将外加数据减少至微不足道的数据量。为了提供对象12的所选部分,这些技术的一个实施例可以标识对象12的覆盖所选部分的分节22并且利用这里给出的技术来读取和展开压缩对象28的与这样的分节22对应的块24。在展开这些块24之后,实施例然后可以修整分节22以生成所选部分、然后可以提供所选部分以满足请求。因此,外加处理的数据少于分节大小42的两倍并且可以通过减少用来压缩对象12的分节大小42来减少。
作为这一第三方面的第四变化,为了访问用于zip存档14中存储的压缩对象28的压缩数据(始于开始地址36),zip文件提取器18可以首先标识中心目录30中的用于压缩对象28的中心标头32、从中心标头32读取用于压缩对象28的局部标头26的局部标头地址34、可以在zip存档14内寻找局部标头地址34、然后前进经过局部标头26去往压缩数据的开始地址36。针对许多压缩对象28,这一寻找压缩对象28的压缩数据的方式可能边际效率低,因为通常包含于局部标头26中的信息的大小固定。然而zip文件提取器18不能简单地在zip存档14内寻找局部标头地址34加上局部标头26的固定大小,因为局部标头26可以包括一个或者多个zip扩展48(可以通过这里给出的技术或者通过任何其它技术来生成这些zip扩展),并且可能仅有可能通过寻找局部标头地址34并且前进经过局部标头26来标识zip扩展48的存在、数目和相应大小。取而代之,根据这一第四变化,zip文件生成器16可以在压缩对象28的中心标头32中(例如在又一zip扩展48内)存储如下块跳转,该块跳转可以指示在压缩对象28的局部标头26中包括的zip扩展48的总zip扩展大小。zip存档提取器18然后可以利用这一信息以通过将局部标头地址34、局部标头26的固定大小和在块跳转中包括的值相加来计算压缩对象28的压缩数据的开始地址36,并且可以直接在zip存档14内寻找这一开始地址36以便开始读取压缩数据。另外,这一计算也可以包括计算所选块24的块地址(例如如在图6的示例场景100中那样)从而使zip存档提取器18能够在zip存档14内从压缩对象28的中心标头32直接寻找所选块24。这些变化因此可以减少在到达所选块24的压缩数据并且提高zip存档提取器18的效率和速度时涉及的在zip存档14内的寻找次数。
图7呈现根据这一第四变化的以包括块跳转102为特征的示例场景110。在这一示例场景110中,zip存档14将对象12存储为在局部标头地址34存储的局部标头26、继而为压缩对象28并且也包括以用于压缩对象28的指定局部标头地址34的中心标头32为特征的中心目录30。然而zip存档提取器18可能不能仅使用这一信息以对压缩对象28的开始地址36定位,因为局部标头26可以包括特定大小的zip扩展48。为了加速对压缩对象28的压缩数据的访问,zip存档生成器16可以在用于压缩对象28的中心标头32中存储包括如下块跳转102的zip扩展48,该块跳转指定局部标头大小(例如存储于压缩对象28的局部标头26中的zip扩展48的大小)。zip存档提取器可以利用这一信息以将压缩对象28的压缩数据的开始地址36计算为局部标头地址34、局部标头26的固定大小和在块跳转102中指示的值之和,因此可以寻找并且访问压缩对象28的压缩数据而无需寻找和前进经过局部标头26。本领域普通技术人员可以设计根据这里给出的技术调整对象12和压缩对象28的压缩和展开的许多方式。
可以在这些技术的实施例之中变化的第四方面涉及未压缩对象12在zip存档14中的存储。待存储于zip存档14中的一些对象12用压缩技术20来压缩可能不利(比如已经压缩的对象12)。为了在zip存档14中存储这一对象12,zip存档生成器16可以简单地存储对象12的局部标头26和分节22。仍然可以使用这里呈现的相同技术以随机访问方式(例如通过标注压缩技术20的存在、然后标注块24的块大小46(这些块大小可以例如直接对应于分节大小42(如在图6的示例场景100中针对第二对象12所示))访问这一对象22。尽管这一随机访问未压缩对象12的分节22的方式可能边际效率低,但是采用与用于访问压缩对象28的技术相同的技术来随机访问未压缩对象12可以是有利的。
作为这一第四方面的变化,在一些场景中,根据地址对准来对准存储于zip存档14中的未压缩对象12的开始地址32可以是有利的。作为一种这样的变化,zip文件提取器16可以能够识别特定未压缩对象18(如果与以特定间隔开始(例如与16kb地址对准)的开始地址32一起存储)。在这样的场景中,可以通过在对象12的局部标头26中包括如下zip扩展48而根据地址对准来对准未压缩对象12的开始地址36,该zip扩展48包括特定缓冲大小的如下缓冲区,该缓冲区可以将对象12的开始地址36移位至满足地址对准的所需地址。
包括用于实现对准开始地址36的缓冲区可以呈现一些优点、但是也增加zip存档14的大小。在一些情况下,这一增加可能明显;例如,如果指定64个千字节(65,536字节)的地址对准,但是如果对象12错过一个字节的地址对准,则可能必须向局部标头26中插入65,536字节的缓冲区以实现对象12与下一64kb对准地址的地址对准。取而代之并且作为这一第四方面的又一变化,可以用减少缓冲区的缓冲大小的方式选择存储于zip存档14中的对象12的顺序。例如zip存档生成器16可以考虑存储于zip存档14中的所有对象14(压缩和未压缩)的大小以及满足地址对准的地址,并且可以应用最佳拟合技术以便选择使缓冲区的缓冲大小减少的对这些对象12的排序。以这一方式,可以实现缓冲对象12以满足地址对准而又减少这样利用的缓冲区的总大小和zip存档14的所得展开。
图8呈现以使用对zip存档12中的对象12的缓冲和选择性排序以实现地址对准为特征的示例性场景120的图示。在这一例子场景120中,包括三个压缩对象28和三个未压缩对象12的六个对象12存储于zip存档14中。在zip存档14中的对象12的第一对象排序126中,可以按照任何顺序存储对象12而起始地址36出现于zip存档14内的任何位置。然而尽管压缩对象28可以具有任何开始地址36,但是可能希望存储三个未压缩对象12而起始地址36匹配于满足地址对准的特定对准边界122(例如在zip存档14内的64kb边界)。因而在第二对象排序128中,每个未压缩对象12的局部标头26可以(在zip扩展48内)包括具有如下缓冲大小的缓冲区124,该缓冲大小将未压缩对象12的开始地址36移位至下一对准边界122。尽管这一缓冲可以实现有利的地址对准,但是可能明显增加zip存档14的大小(例如,由于在第二未压缩对象12之前的局部标头26中包括的大缓冲区124)。因此可以选择存储于zip存档14中的对象12的顺序以减少缓冲区124的缓冲大小。例如第三对象排序130也向未压缩对象12的局部标头26中插入缓冲区124以实现地址对准,但是调整对象12在zip存档14内的对象顺序(例如通过根据最佳拟合技术选择对象顺序)使得减少缓冲区124的缓冲大小。尽管以第三对象排序130为特征的zip存档14仍然大于以第一对象排序126为特征的zip存档14,但是它明显小于以第二对象排序128为特征的zip存档14并且也实现未压缩对象12的地址对准。本领域普通技术人员可以设计根据这里给出的技术在zip存档14中存储未压缩对象12的许多方式。
虽然已经用结构特征和/或方法动作特有的语言描述主题内容,但是将理解在所附权利要求中限定的主题内容未必限于上文描述的具体特征或者动作。实际上,公开上文描述的具体特征和动作作为权利要求的例子实施形式。
如在本申请中所用,术语“部件”、“模块”、“系统”、“接口”等主要用来指代计算机有关实体(硬件、硬件与软件的组合、软件或者执行的软件)。例如部件可以是但不限于在处理器上运行的过程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。举例而言,在控制器上运行的应用和控制器均可以是部件。一个或者多个部件可以驻留于执行的过程和/或线程内,并且部件可以本地地位于一个计算机上和/或分布于两个或者更多计算机之间。
另外,可以使用标准编程和/或工程技术以产生用于控制计算机实施公开的主题内容的软件、固件、硬件或者其任何组合来将要求保护的主题内容实施为一种方法、装置或者制造产品。如这里所用术语“制造产品”旨在于涵盖从任何计算机可读设备、载体或者介质可访问的计算机程序。当然,本领域技术人员将认识到可以对这一配置做出许多修改而未脱离要求保护的主题内容的范围或者精神。
图9和以下讨论提供对如下适当计算环境的简要、一般概述,该计算环境用于实施这里阐述的技术提供中的一种或者多种技术提供的实施例。图9的操作环境仅为适当操作环境的一个例子而并非旨在暗示关于操作环境的使用或功能范围的任何限制。例子计算设备包括但不限于个人计算机、服务器计算机、手持或者膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费者电子设备、迷你型计算机、大型计算机、包括任何上述系统或者设备的分布式计算环境等。
虽然并非必需,但是在“计算机可读指令”由一个或者多个计算设备执行的主要背景中描述实施例。可以经由计算机可读介质(下文讨论)分布计算机可读指令。计算机可读指令可以实施为执行特定任务或者实施特定抽象数据类型的诸如函数、对象、专用编程接口(API)、数据结构等程序模块。通常可以在各种环境中按照需要组合或者分布计算机可读指令的功能。
图9图示了包括如下计算设备142的系统140的例子,该计算设备被配置成实施这里提供的一个或者多个实施例。在一种配置中,计算设备142包括至少一个处理单元146和存储器148。根据确切的计算设备配置和类型,存储器148可以是易失性(如例如RAM)、非易失性(如例如ROM、闪存等)或者二者的某一组合。这一配置在图9中由虚线144图示。
在其它实施例中,设备142可以包括附加特征和/或功能。例如设备142也可以包括附加储存器(例如可移动和/或不可移动(包括但不限于磁储存器、光学储存器等))。这样的附加储存器在图9中由储存器150图示。在一个实施例中,用于实施这里提供的一个或者多个实施例的计算机可读指令可以在储存器150中。储存器150也可以存储用于实施操作系统、应用程序等的其它计算机可读指令。例如可以在存储器148中加载计算机可读指令用于由处理单元146执行。
如这里所用术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括用任何用于存储信息(比如计算机可读指令或者其它数据)的方法或者技术实施的易失性和非易失性、可移动和不可移动介质。存储器148和储存器150为计算机存储介质的例子。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字万用盘(DVD)或者其它光学储存器、磁盒、磁带、磁盘储存器或者其它磁存储设备或者任何可以用来存储所需信息并且可以由设备142存取的其它介质。任何这样的计算机存储介质可以是设备142的部分。
设备142也可以包括允许设备142与其它设备通信的通信连接(一个或多个)156。通信连接(一个或多个)156可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发送器/接收器、红外线端口、USB连接或者其它用于将计算设备142连接到其它计算设备的接口。通信连接(一个或多个)156可以包括有线连接或者无线连接。通信连接(一个或多个)156可以发送和/或接收通信介质。
术语“计算机可读介质”可以包括通信介质。通信介质通常在“调制的数据信号”(比如载波)或者其它传送机制中收录计算机可读指令或者其它数据并且包括任何信息递送介质。术语“调制数据信号”可以包括如下信号,该信号的一个或者多个特性以对信号中的信息编码这样的方式来设置或者改变。
设备142可以包括输入设备(一个或多个)154(比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外线相机、视频输入设备和/或任何其它输入设备)。也可以在设备142中包括输出设备(一个或多个)152(比如一个或者多个显示器、扬声器、打印机和/或任何其它输出设备)。输入设备(一个或多个)154和输出设备(一个或多个)152可以经由有线连接、无线连接或者其任何组合连接到设备142。在一个实施例中,可以使用来自另一计算设备的输入设备或者输出设备作为用于计算设备142的输入设备(一个或多个)154或者输出设备(一个或多个)152。
计算设备142的部件可以由各种互连(比如总线)连接。这样的互连可以包括外围部件互连(PCI)(比如PCI快速)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等。在另一实施例中,计算设备142的部件可以由网络互连。例如存储器148可以包括由通过网络互连的不同物理位置的多个物理存储器单元构成。
本领域技术人员将认识到可以跨网络分布用来存储计算机可读指令的存储设备。例如经由网络158可访问的计算设备160可以存储用来实施这里提供的一个或者多个实施例的计算机可读指令。计算设备142可以访问计算设备160并且下载部分或者所有计算机可读指令用于执行。取而代之,计算设备142可以按照需要下载多条计算机可读指令,或者一些指令可以在计算设备142执行而一些在计算设备160执行。
这里提供实施例的各种操作。在一个实施例中,一个或者多个描述的操作可以构成存储于一个或者多个计算机可读介质上的如下计算机可读指令,这些计算机可读指令如果由计算设备执行则将使计算设备执行描述的操作。一些或者所有操作的描述顺序不应理解为意味着这些操作必然依赖于顺序。受益于本说明书的本领域技术人员将理解替代排序。另外将理解并非所有操作必须存在于这里提供的每个实施例中。
另外,词“示例性的”这里用来意味着用作例子、示例或者说明。这里描述为“示例”的任何方面或者设计未必理解为比其它方面或者设计有利。实际上,使用词示例旨在于以具体方式呈现概念。如在本申请中所用,术语“或者”旨在于意味着包含性的“或者”而不是排他性的“或者”。也就是说,除非另有指定或者根据上下文清楚,“X运用A或者B”旨在于意味着任何自然的包含性的排列。也就是说,如果X运用A;X运用B;或者X运用A和B,则在任何前述实例之下满足“X运用A或者B”。此外,如在本申请和所附权利要求中所用冠词“一个”除非另有指定或者根据上下文清楚涉及单数形式则一般可以理解为意味着“一个/或者多个”。
另外,虽然已经关于一个或者多个实施方式示出和描述本公开内容,但是本领域技术人员基于对本说明书和附图的阅读和理解将想到等效变更和修改。本公开内容包括所有这样的修改和变更并且仅由所附权利要求的范围限制。具体关于由上述部件(例如单元、资源等)执行的各种功能,用来描述这样的部件的术语除非另有明示旨在于对应于尽管未在结构上与执行本公开内容的这里说明的示例实施方式中的功能的公开结构等效、但是执行所述部件的指定功能(例如在功能上等效)的任何部件。此外,尽管可能已经关于若干实施方式中的仅一个实施方式公开本公开内容的特定特征,但是这样的特征可以如对于任何给定或者特定应用而言可能希望和有利的那样与其它实施方式的一个或者多个其它特征组合。另外,在术语“包括”、“具有”或者其变体在具体实施方式或者权利要求中的使用范围内,这样的术语旨在于以与术语“包括”相似的方式具有包含意义。
Claims (15)
1.一种在具有处理器(146)和压缩技术(20)的设备(142)上生成zip存档(14)的方法(50),所述zip存档压缩至少一个对象(12),该对象包括具有分节大小(42)的分节(22),所述方法(50)包括:
针对相应对象(12),使用所述压缩技术(20)将所述对象(12)从具有所述分节大小(42)的所述分节(22)压缩(56)成分别具有块大小(46)的块(24),所述块包括具有第一块大小的第一块以及具有第二块大小的第二块,该第二块大小不同于该第一块大小;并且
生成(58)zip存档(14),所述zip存档包括:
针对相应对象(12):
局部标头(26),以及
所述对象(12)的所述块(24);以及
块表(44),所述块表指定:
所述压缩技术(20),以及
针对用所述压缩技术(20)压缩的相应对象(12),针对与所述对象的分节相对应的所述对象的相应块,所述块(24)的所述块大小(46)。
2.根据权利要求1所述的方法,所述块表在所述zip存档的中心目录内存储为zip扩展。
3.根据权利要求1所述的方法,所述块表指定所述分节大小。
4.根据权利要求3所述的方法,所述分节大小由所述压缩技术确定。
5.根据权利要求3所述的方法,所述分节大小由生成所述zip存档的用户指定。
6.根据权利要求1所述的方法:
所述zip存档按照对象顺序存储用所述压缩技术压缩的对象;并且
所述块表根据所述对象顺序指定所述对象的所述块的块大小。
7.根据权利要求2所述的方法,所述中心目录包括用于对象的中心标头,所述中心标头包括块跳转,块跳转指定存储于所述对象的所述局部标头中的zip扩展的zip扩展大小。
8.根据权利要求1所述的方法:
存储于所述zip存档中的所述对象包括未用所述压缩技术压缩的至少一个未压缩对象;并且
生成所述zip存档包括:针对相应未压缩对象,存储所述未压缩对象的局部标头和分节。
9.根据权利要求8所述的方法,还包括在所述未压缩对象的局部标头中包括zip扩展,所述zip扩展包括具有缓冲大小的缓冲区,所述缓冲大小被选择成根据地址对准来对准所述块的开始地址。
10.根据权利要求9所述的方法,所述zip存档按照为了减少用于所述未压缩对象的所述缓冲区的缓冲大小而选择的对象顺序存储对象。
11.一种满足对读取所选对象(12)的至少一个所选分节(22)的请求的方法(70),所选对象(12)用压缩技术(20)从具有分节大小(42)的分节(22)压缩成分别具有块大小(46)的块(24)并且存储于具有块表(44)的zip存档(14)内,所述块表(44)指定用于使用所述压缩技术(20)来压缩的至少一个对象(12)的至少一个块(24)的块大小(46),所述块包括具有第一块大小的第一块以及具有第二块大小的第二块,该第二块大小不同于该第一块大小,所述方法(70)在具有处理器(146)的设备(142)上执行并且包括:
使用所述zip存档(14)的中心目录(30)来标识(76)zip存档内所述所选对象(12)的开始地址(36);
针对所述所选对象(12)的相应块,根据所述对象的所述开始地址和所述块表指定的所述块的所述块大小来标识所述块在zip存档内的块地址;
读取(80)所述所选对象(12)在所述块地址的所选块(24);
使用所述压缩技术(20)来展开(82)所述所选块(24)以生成所述至少一个所选分节(22);并且
提供(84)所述至少一个所选分节(22)以满足所述请求。
12.根据权利要求11所述的方法:
所述请求指定所选对象的至少一个所选分节内的所选部分;
读取所述所选块包括:读取所述所选对象的与所述至少一个所选分节对应的所述至少一个所选块;
展开所述所选块包括:使用所述压缩技术来展开所述至少一个所选块以生成至少一个所选分节;
提供所述所选分节包括:
修整所述至少一个所选分节以生成所述所选部分;和
提供所述所选部分以满足所述请求。
13.根据权利要求11所述的方法:
所述zip存档按照对象顺序存储用所述压缩技术压缩的对象;
所述块表根据所述对象顺序指定所述对象的所述块的所述块大小作为块大小序列;并且
标识所述所选块的所述块地址包括:
使用所述zip存档的所述中心目录来标识所述zip存档的用所述压缩技术压缩的所述对象;
在所述块表的所述块大小序列内根据所述对象顺序前进经过针对在所述所选对象之前的至少一个在先对象而指定的所述块大小去往指定用于所述所选对象的所述块大小的块大小序列地址;并且
从所述块大小序列内的所述块大小序列地址开始将在所述所选块之前的所述块的所述块大小相加以计算所述所选块的块地址。
14.根据权利要求13所述的方法,前进经过针对在先对象而指定的所述块大小包括:
根据所述在先对象的未压缩大小和所述分节大小计算针对所述在先对象的块大小计数;并且
在所述块大小序列内,前进经过与所述块大小计数匹配的多个块大小。
15.根据权利要求11所述的方法:
所述zip存档内的至少一个对象具有局部标头,所述至少一个对象的所述局部标头包括具有zip扩展大小的zip扩展;
所述zip存档的所述中心目录包括用于所述至少一个对象的中心标头,所述中心标头包括块跳转,所述块跳转指定所述对象的所述局部标头内的所述zip扩展的所述zip扩展大小;并且
标识所述块地址包括:
读取用于所述至少一个对象的所述中心标头中的所述块跳转,并且
向所述块地址添加所述块跳转。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/971,436 US9852143B2 (en) | 2010-12-17 | 2010-12-17 | Enabling random access within objects in zip archives |
US12/971436 | 2010-12-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102542013A CN102542013A (zh) | 2012-07-04 |
CN102542013B true CN102542013B (zh) | 2015-09-09 |
Family
ID=46235724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110423067.2A Active CN102542013B (zh) | 2010-12-17 | 2011-12-16 | 实现在zip存档中的对象内的随机访问 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9852143B2 (zh) |
CN (1) | CN102542013B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055258B2 (en) * | 2014-04-02 | 2021-07-06 | International Business Machines Corporation | Directly accessing archived data and executable files |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518706A (zh) * | 2001-05-16 | 2004-08-04 | �����ɷ� | 使用蝶形处理器对离散余弦变换编码和计算的设备和方法 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU683038B2 (en) | 1993-08-10 | 1997-10-30 | Addison M. Fischer | A method for operating computers and for processing information among computers |
US5933104A (en) | 1995-11-22 | 1999-08-03 | Microsoft Corporation | Method and system for compression and decompression using variable-sized offset and length fields |
US6412017B1 (en) | 1996-07-01 | 2002-06-25 | Microsoft Corporation | Urgent replication facility |
EP0946019A1 (en) | 1998-03-25 | 1999-09-29 | CANAL+ Société Anonyme | Authentification of data in a digital transmission system |
US6353887B1 (en) | 1998-11-13 | 2002-03-05 | Unisys Corporation | Digital signaturing method and system for re-creating specialized native files out of a container imported from an open network or residing on a CD-ROM |
US7129860B2 (en) | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7383205B1 (en) | 1999-03-27 | 2008-06-03 | Microsoft Corporation | Structure of a digital content package |
US6697948B1 (en) | 1999-05-05 | 2004-02-24 | Michael O. Rabin | Methods and apparatus for protecting information |
US6785815B1 (en) | 1999-06-08 | 2004-08-31 | Intertrust Technologies Corp. | Methods and systems for encoding and protecting data using digital signature and watermarking techniques |
US6629150B1 (en) | 1999-06-18 | 2003-09-30 | Intel Corporation | Platform and method for creating and using a digital container |
US6879988B2 (en) * | 2000-03-09 | 2005-04-12 | Pkware | System and method for manipulating and managing computer archive files |
US20050015608A1 (en) | 2003-07-16 | 2005-01-20 | Pkware, Inc. | Method for strongly encrypting .ZIP files |
US7162499B2 (en) | 2000-06-21 | 2007-01-09 | Microsoft Corporation | Linked value replication |
US6650261B2 (en) | 2001-09-06 | 2003-11-18 | Xerox Corporation | Sliding window compression method utilizing defined match locations |
US7035922B2 (en) | 2001-11-27 | 2006-04-25 | Microsoft Corporation | Non-invasive latency monitoring in a store-and-forward replication system |
US7134020B2 (en) | 2002-01-31 | 2006-11-07 | Peraogulne Corp. | System and method for securely duplicating digital documents |
US6993539B2 (en) | 2002-03-19 | 2006-01-31 | Network Appliance, Inc. | System and method for determining changes in two snapshots and for transmitting changes to destination snapshot |
US6700513B2 (en) | 2002-05-14 | 2004-03-02 | Microsoft Corporation | Method and system for compressing and decompressing multiple independent blocks |
US20030221105A1 (en) | 2002-05-20 | 2003-11-27 | Autodesk, Inc. | Extensible mechanism for attaching digital signatures to different file types |
US6978206B1 (en) * | 2002-06-21 | 2005-12-20 | Infogation Corporation | Distributed navigation system |
DE10228128B4 (de) | 2002-06-24 | 2004-09-23 | Infineon Technologies Ag | Verfahren zur Speicherung von Daten, Verfahren zum Lesen von Daten, Vorrichtung zur Komprimierung von Daten und Vorrichtung zur Dekomprimierung von Daten |
US7287164B2 (en) | 2002-09-12 | 2007-10-23 | International Business Machines Corporation | Method and system for encoding signatures to authenticate files |
US7055008B2 (en) | 2003-01-22 | 2006-05-30 | Falconstor Software, Inc. | System and method for backing up data |
US7340467B2 (en) | 2003-04-15 | 2008-03-04 | Microsoft Corporation | System and method for maintaining a distributed database of hyperlinks |
US7424482B2 (en) * | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
US7065650B2 (en) | 2004-05-10 | 2006-06-20 | Aladdin Knowledge Systems Ltd. | Method for indicating the integrity of a collection of digital objects |
JP2006059319A (ja) | 2004-07-21 | 2006-03-02 | Ricoh Co Ltd | 情報処理装置、プログラムおよび記憶媒体 |
US20060117307A1 (en) | 2004-11-24 | 2006-06-01 | Ramot At Tel-Aviv University Ltd. | XML parser |
US7509354B2 (en) | 2005-01-07 | 2009-03-24 | International Business Machines Corporation | System, method, and computer program product for multi-master replication conflict resolution |
JP2006215954A (ja) | 2005-02-07 | 2006-08-17 | Hitachi Ltd | ストレージシステム及びストレージ装置のアーカイブ管理方法 |
US7483929B2 (en) | 2005-02-08 | 2009-01-27 | Pro Softnet Corporation | Systems and methods for storing, backing up and recovering computer data files |
US7587401B2 (en) | 2005-03-10 | 2009-09-08 | Intel Corporation | Methods and apparatus to compress datasets using proxies |
US8397072B2 (en) | 2005-05-20 | 2013-03-12 | Rovi Solutions Corporation | Computer-implemented method and system for embedding ancillary information into the header of a digitally signed executable |
US20070050431A1 (en) | 2005-08-26 | 2007-03-01 | Microsoft Corporation | Deploying content between networks |
CN101346883A (zh) * | 2005-10-26 | 2009-01-14 | 斯多维兹有限公司 | 用于块模式访问存储的数据压缩的方法和系统 |
US8364965B2 (en) | 2006-03-15 | 2013-01-29 | Apple Inc. | Optimized integrity verification procedures |
US8060871B2 (en) | 2006-03-30 | 2011-11-15 | Microsoft Corporation | Servicing software through versioning |
US7933924B2 (en) | 2006-07-14 | 2011-04-26 | Xerox Corporation | Document objects |
US20080173558A1 (en) * | 2007-01-22 | 2008-07-24 | Contelanea Arvanitis | Fragrance-emanating nasal mask device and method |
US8090954B2 (en) | 2007-03-16 | 2012-01-03 | Microsoft Corporation | Prevention of unauthorized forwarding and authentication of signatures |
US7925749B1 (en) | 2007-04-24 | 2011-04-12 | Netapp, Inc. | System and method for transparent data replication over migrating virtual servers |
US8549326B2 (en) | 2007-10-20 | 2013-10-01 | Blackout, Inc. | Method and system for extending encrypting file system |
US8504736B2 (en) | 2008-05-30 | 2013-08-06 | Sony Computer Entertainment America Inc. | File input/output scheduler |
DE602008002583D1 (de) | 2008-07-21 | 2010-10-28 | Sony Comp Entertainment Europe | Datenkomprimierung und -dekomprimierung |
US8024382B2 (en) * | 2009-01-20 | 2011-09-20 | Autodesk, Inc. | Dynamic manipulation of archive files |
US8209303B2 (en) | 2009-07-29 | 2012-06-26 | Novell, Inc. | System and method for implementing a reliable persistent random access compressed data stream |
-
2010
- 2010-12-17 US US12/971,436 patent/US9852143B2/en active Active
-
2011
- 2011-12-16 CN CN201110423067.2A patent/CN102542013B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1518706A (zh) * | 2001-05-16 | 2004-08-04 | �����ɷ� | 使用蝶形处理器对离散余弦变换编码和计算的设备和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120158676A1 (en) | 2012-06-21 |
US9852143B2 (en) | 2017-12-26 |
CN102542013A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN102780919A (zh) | 通过关键帧进行视频定位和播放的方法 | |
CN101751440A (zh) | 一种数据压缩/解压缩方法及其装置 | |
CN108334609A (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
CN101521782A (zh) | 一种快进退浏览视频的方法、系统及多媒体设备 | |
CN105320669A (zh) | 数据存储、读取方法及数据存储、读取装置 | |
JP6309621B2 (ja) | メモリシステムにおける電力消費を節約するためのシステムおよび方法 | |
CN111427918A (zh) | 交易明细数据比对方法及装置 | |
CN104468330A (zh) | 分布式消息队列系统的数据处理方法和装置 | |
US10803018B2 (en) | Compressed data rearrangement to optimize file compression | |
CN102542013B (zh) | 实现在zip存档中的对象内的随机访问 | |
CN110019347A (zh) | 一种区块链的数据处理方法、装置及终端设备 | |
US20220199202A1 (en) | Method and apparatus for compressing fastq data through character frequency-based sequence reordering | |
JP2015532489A (ja) | 空間データ圧縮装置及びその方法と、圧縮された空間データ復元装置及びその方法 | |
CN107436848B (zh) | 一种实现用户数据和压缩数据间转换的方法及装置 | |
US20150180815A1 (en) | System for push service notification based on user history | |
CN115129781A (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN111291017B (zh) | 镜像仓库的镜像存储、提取方法及装置 | |
CN111447267B (zh) | 信息同步方法、装置、计算机可读存储介质及设备 | |
CN106874979B (zh) | 一种条形码处理、显示、读取方法和装置 | |
CN104935647B (zh) | 一种文件分享方法及装置 | |
KR102225820B1 (ko) | 악성코드 분석용 머신러닝을 위한 하이브리드 피처 벡터 생성 장치 및 방법 | |
US20130218851A1 (en) | Storage system, data management device, method and program | |
CN104090898B (zh) | 本地音乐与库内音乐匹配的方法和装置 | |
CN113473171A (zh) | 资源处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150617 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150617 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |