An archive file is a single file which holds many other files, often in a compressed format. Programs which create these file types are called archivers. There are a variety of archivers with distinct archive formats available, and many of these formats are not interoperable. Some archivers and the files they generate are specific to particular operating systems, while others are more portable across operating systems and computer architectures.
Zip files (.zip) and tarballs (.tar) are two of the most common archive file types. Both of these are compressed archives, each using a different compression method. The two compression methods can be combined to form a zipped tarball (.tgz), which is also quite common. A zipped tarball does not consist of a zip file and a tarball combined together; instead, it is one large file that uses both the zip and tarball methods of compression. When accessing this archive file type, one must first decompress it as a zip file, then decompress it again as a tarball.
Archive files are commonly used to combine a group of files for ease of sharing or for increased efficiency. Compressed archive files are often attached to emails or are sent across networks as an efficient way to share multiple types of data at once. MHTML is an example of this technique, and it combines all the resources of a web page, including text, images, sounds, or other media, into one file. Sending one MHTML file attached to an email is far more efficient, and easier to handle, then attaching all the separate files that make up a web page one by one.
In software development, an archive file can be used to create a static library of data for a program, consolidating large groups of related code into a single unit for ease of integration into larger data networks. The exact type of archive file created for the library, as well as its composition, depends on the computer language being used and the architecture of the computer on which it was created. When used in this context, no linking is performed between the code files within the archive and they remain separate entities, just like any other file type placed into an archive. The separation of files in an archive file static library means that it is possible for linking errors to still exist, even if they were not shown during the creation of the library. When using archive files to create libraries, one should take great care to integrate them into programs properly, because archive files can neither mask nor correct programming errors.