如何压缩文件

作者:Tom Harris  | 
A man stuck in a conference room filled with paper
需要压缩文件?Sturti / Getty Images

如果您经常从互联网上下载程序和文件,您可能以前遇到过zip文件。这种压缩系统是一个非常实用的发明,因为它可以减少文件中的总比特和字节数,从而使其可以通过较慢的互联网连接更快地传输,或占用磁盘上更少的空间。既然您想知道如何压缩文件,您会很高兴地发现它比您想象的要简单。

乍一看,这似乎很神秘。您如何能够减少比特和字节的数量,然后又在以后将这些精确的比特和字节添加回去呢?事实证明,该过程背后的基本思想相当简单。在介绍完如何压缩文件之后,我们将详细探讨文件压缩的工作原理。

广告

压缩文件

压缩文件实质上涉及使用压缩软件来减小其大小。此过程可以帮助您节省磁盘空间,并使文件更容易通过互联网发送。以下是关于如何压缩文件的简单指南,特别侧重于创建zip文件,这是一种流行的压缩文件夹格式

步骤1:选择您的文件

首先决定要压缩哪些文件。压缩对于视频文件等较大文件最为有效,因为它们会占用大量的磁盘空间和带宽。

广告

步骤2:使用压缩软件

大多数计算机都内置了压缩软件。在Windows上,您可以通过右键单击所选文件,导航到“发送到”,然后选择“压缩(zipped)文件夹”来压缩文件。Mac用户可以按住Control键单击所选文件并选择“压缩”。如果您的操作系统不包含压缩功能,或者您需要更高级的选项,您可能需要下载第三方压缩软件。

步骤3:创建新的Zip文件

选择压缩选项后,软件将开始压缩文件。这将在原始文件相同的位置创建一个新的zip文件。压缩文件所需的时间可能因文件大小和计算机性能而异。

步骤4:管理压缩文件夹

创建新的zip文件后,您可以根据需要重命名、移动到新位置或通过电子邮件发送。请记住,要使用或查看zip文件内的文件,您或收件人需要解压缩或提取文件,这会反转压缩过程。

请记住,虽然压缩可以显著减小文件大小,但对于某些类型的文件(如图像和视频文件),它也可能导致质量下降。然而,对于许多类型的文档,压缩可以减小文件大小,而对质量几乎没有影响。无论您是想释放计算机空间还是简化文件共享,了解如何创建压缩文件夹都是当今数字世界中的一项宝贵技能。

广告

文件压缩原理

大多数计算机文件都相当冗余——它们一遍又一遍地列出相同的信息。文件压缩程序只是消除了冗余。文件压缩程序不会一遍又一遍地列出一段信息,而是只列出一次,然后每当该信息出现在原始程序中时,就引用它。

举个例子,让我们看看一种我们都熟悉的信息:单词。

广告

在约翰·F·肯尼迪1961年的就职演说中,他发表了这句名言

“不要问你的国家能为你做什么——要问你能为你的国家做什么。”

这句引文有17个单词,由61个字母、16个空格、一个破折号和一个句号组成。如果每个字母、空格或标点符号占用一个内存单位,我们得到的文件总大小为79个单位。为了减小文件大小,我们需要寻找冗余。

我们立即注意到

  • “ask”出现两次
  • “what”出现两次
  • “your”出现两次
  • “country”出现两次
  • “can”出现两次
  • “do”出现两次
  • “for”出现两次
  • “you”出现两次

忽略大小写字母的区别,这句话大约有一半是冗余的。九个词——ask、not、what、your、country、can、do、for、you——几乎提供了我们整个引文所需的一切。要构建短语的后半部分,我们只需指向前半部分的单词并填入空格和标点符号。

接下来,我们将探讨文件压缩系统如何处理冗余。

目录

广告

冗余和算法

大多数压缩程序都使用LZ自适应基于字典算法的变体来缩小文件。“LZ”指的是Lempel-Ziv,该算法的创建者,“字典”指的是对数据片段进行分类的方法。

排列字典的系统各不相同,但它可以像编号列表一样简单。当我们浏览肯尼迪的名言时,我们挑出重复的词并将它们放入编号索引中。然后,我们只需写下数字而不是写出整个单词。

广告

所以,如果这是我们的字典

  1. ask
  2. what
  3. your
  4. country
  5. can
  6. for
  7. you

我们的句子现在是:“1 not 2 3 4 5 6 7 8 — 1 2 8 5 6 7 3 4”

如果您了解该系统,您可以仅使用此字典和数字模式轻松重建原始短语。这就是您计算机上的解压程序在解压下载文件时所做的事情。您可能还遇到过可以自行解压的压缩文件。要创建此类文件,程序员会在压缩文件中包含一个简单的解压程序。一旦下载,它会自动重建原始文件。

但是,使用这个系统我们实际上节省了多少空间呢?“1 not 2 3 4 5 6 7 8 — 1 2 8 5 6 7 3 4”肯定比“不要问你的国家能为你做什么;要问你能为你的国家做什么”要短;但请记住,我们需要将字典本身与文件一起保存。

在实际的压缩方案中,弄清楚各种文件要求会相当复杂;但为了我们的目的,我们回到每个字符和每个空格占用一个内存单位的想法。我们已经看到完整的短语占用79个单位。我们压缩后的句子(包括空格)占用37个单位,字典(单词和数字)也占用37个单位。这使得我们的文件大小为74,所以我们并没有减少太多文件大小。

但这只是一句话!您可以想象,如果压缩程序处理肯尼迪演讲的其余部分,它会发现这些词和其他词重复了更多次。而且,正如我们将在下一节中看到的,它还会重写字典以获得尽可能最有效的组织。

广告

查找模式

在我们之前的例子中,我们挑出了所有重复的单词并将它们放入字典中。对我们来说,这是编写字典最显而易见的方式。但是压缩程序看待它的方式截然不同:它没有任何独立单词的概念——它只寻找模式。为了尽可能地减小文件大小,它会仔细选择要包含在字典中的模式。

如果从这个角度来处理这个短语,我们最终会得到一个完全不同的字典。

广告

如果压缩程序扫描肯尼迪的短语,它会遇到的第一个冗余只有几个字母长。在“ask not what your”中,有一个字母“t”后跟一个空格的重复模式——在“not”和“what”中。如果压缩程序将此写入字典,那么每当“t”后跟一个空格时,它就可以写入一个“1”。但在这个短语中,这种模式出现的次数不足以使其成为一个有价值的条目,因此程序最终会覆盖它。

程序可能注意到的下一件事是“ou”,它出现在“your”和“country”中。如果这是一个更长的文档,将这种模式写入字典可以节省大量空间——“ou”是英语中相当常见的组合。但是当压缩程序处理这个句子时,它会很快发现一个更好的字典条目选择:不仅“ou”重复,而且整个词“your”和“country”都重复了,而且它们实际上是一起重复的,作为短语“your country”。在这种情况下,程序将用“your country”的条目覆盖“ou”的字典条目。

短语“can do for”也重复出现,一次后面跟着“your”,另一次后面跟着“you”,这给我们一个重复的模式“can do for you”。这允许我们用一个数字值写入15个字符(包括空格),而“your country”只允许我们用一个数字值写入13个字符(包括空格),所以程序会将“your country”条目覆盖为“r country”,然后为“can do for you”写入一个单独的条目。程序以这种方式进行,拾取所有重复的信息片段,然后计算应该将哪些模式写入字典。这种重写字典的能力是LZ自适应基于字典算法的“自适应”部分。

无论您使用何种特定方法,这种深入的搜索系统都能让您比仅仅挑选单词更有效地压缩文件。使用我们上面选出的模式,并用“__”表示空格,我们得到这个更大的字典

  1. ask__
  2. what__
  3. you
  4. r__country
  5. cando__for__you

以及这个更短的句子:“1not__2345__—__12354”

现在这个句子占用18个内存单位,我们的字典占用41个单位。所以我们已经将文件总大小从79个单位压缩到59个单位!这只是压缩短语的一种方式,不一定是效率最高的方式。(看看你能不能找到更好的方法!)

那么这个系统有多好呢?文件压缩比取决于多种因素,包括文件类型、文件大小和压缩方案。

在世界上大多数语言中,某些字母和单词经常以相同的模式一起出现。由于这种高度冗余,文本文件压缩效果非常好。对于一个大小合适的文本文件,减少50%或更多是常见的。大多数编程语言也非常冗余,因为它们使用相对较少的命令集合,这些命令经常以固定模式组合在一起。包含大量独特信息的文件,例如图形或MP3文件,使用此系统无法进行大量压缩,因为它们没有重复的模式(更多内容见下一节)。

如果一个文件有很多重复模式,压缩率通常会随着文件大小的增加而提高。您只需看看我们的例子就可以看到这一点——如果我们有更多肯尼迪的演讲内容,我们将能够更频繁地引用字典中的模式,从而更充分地利用每个条目的文件空间。此外,在更长的作品中可能会出现更普遍的模式,从而使我们能够创建一个更高效的字典。

这种效率也取决于压缩程序使用的具体算法。有些程序特别适合在某些类型的文件中识别模式,因此它们可能会更简洁地压缩这些文件。其他程序则有字典中的字典,这可能对大型文件有效压缩,但对小型文件则不然。虽然所有这类压缩程序都基于相同的基本思想,但实际执行方式存在很大差异。程序员一直在努力构建更好的系统。

广告

有损压缩和无损压缩

我们在此讨论的压缩类型称为无损压缩,因为它允许您精确地重建原始文件。所有无损压缩都基于将文件分解为“更小”形式进行传输或存储,然后在其另一端重新组合以供再次使用的思想。

有损压缩的工作方式大相径庭。这些程序只是简单地消除“不必要”的信息位,从而使文件更小。这种类型的压缩常用于减小位图图片的文件大小,因为它们通常相当庞大。为了了解其工作原理,让我们考虑一下您的计算机如何压缩一张扫描的照片。

广告

无损压缩程序对这类文件无能为力。虽然图片的大部分看起来可能相同——例如,整个天空都是蓝色的——但大多数单个像素都略有不同。要在不影响分辨率的情况下缩小图片,您必须更改某些像素的颜色值。如果图片有很多蓝天,程序会选择一种可以用于每个像素的蓝色。然后,程序会重写文件,使得每个天空像素的值都引用回此信息。如果压缩方案运行良好,您不会注意到变化,但文件大小将显著减小。

当然,使用有损压缩,文件压缩后您无法取回原始文件。您只能使用压缩程序对原始文件的重新解释。因此,您不能将这种压缩用于任何需要精确复制的内容,包括软件应用程序、数据库和总统就职演说。

我们结合人工智能技术更新了本文,并确保其经过十万个为什么编辑的事实核查和编辑。

广告

文件压缩常见问题

压缩文件有什么用?
压缩有助于减小文件大小。这样,您可以更快地发送和接收数据。
文件压缩方案的基本类型有哪些?
文件压缩分为两种类型:有损压缩和无损压缩。无损压缩将文件大小分解为较小的大小以便传输,并在另一端重新组合以便再次使用。有损压缩则消除“不必要”的信息位,从而使文件更小;它无法恢复为更大的文件。
zip文件使用哪种压缩?
Zip文件使用无损数据压缩。这些文件可以包含多个可能已被压缩的目录。它们使用某些压缩算法,例如DEFLATE。
文件压缩会降低质量吗?
在计算机或相机中压缩图像后,压缩可能会降低锐度、对比度和更精细的颜色细节。

广告

加载中...