ZipUtil

public class ZipUtil
extends Object

java.lang.Object
   ↳ com.android.tradefed.util.ZipUtil


用于压缩相关操作的辅助类

摘要

公共构造函数

ZipUtil()

公共方法

static void addToZip(ZipOutputStream out, File file, List<String> relativePathSegs)

以递归方式将指定文件及其内容添加到 ZipOutputStream

static void applyPermission(File targetFile, CentralDirectoryInfo zipEntry)

应用在中央目录条目中配置的文件权限。

static void closeZip(ZipFile zipFile)

关闭已打开的 ZipFile,忽略所有异常。

static File createZip(File dir, String name)

用于创建包含指定目录及其所有内容的临时 ZIP 文件的实用方法。

static File createZip(File dir)

用于创建包含指定目录及其所有内容的临时 ZIP 文件的实用方法。

static File createZip(List<File> files)

用于创建包含指定文件的临时 zip 文件的实用方法

static File createZip(List<File> files, String name)

用于创建包含指定文件的临时 zip 文件的实用方法。

static void createZip(List<File> files, File zipFile)

用于创建包含指定文件的 ZIP 文件的实用方法

static void createZip(File dir, File zipFile)

用于创建包含指定目录及其所有内容的 ZIP 文件的实用方法。

static File extractFileFromZip(ZipFile zipFile, String filePath)

用于将一个特定文件从 zip 文件提取到临时文件的实用方法

static void extractZip(ZipFile zipFile, File destDir)

用于将 ZIP 文件的全部内容提取到指定目录中的实用方法

static void extractZip(ZipFile zipFile, File destDir, Predicate<ZipEntry> shouldExtract)

用于将 ZIP 文件的内容提取到指定目录中的实用方法

static File extractZipToTemp(File zipFile, String nameHint)

将 zip 文件解压缩到以字符串为前缀的临时目录

static List<CentralDirectoryInfo> getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, long offset, boolean useZip64)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

static List<CentralDirectoryInfo> getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

static List<CentralDirectoryInfo> getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, boolean useZip64)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

static List<CentralDirectoryInfo> getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, long offset)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

static void gzipFile(File file, File gzipFile)

用于创建单个文件的 gzip 压缩版本的辅助方法。

static boolean isZipFileValid(File zipFile, boolean thorough)

用于验证 ZIP 文件是否损坏的实用方法。

static void unzipPartialZipFile(File partialZip, File targetFile, CentralDirectoryInfo zipEntry, LocalFileHeader localFileHeader, long startOffset)

从部分 ZIP 文件中提取单个请求的文件。

static void unzipPartialZipFolder(File targetFile, CentralDirectoryInfo zipEntry)

从部分 ZIP 文件中提取所请求的文件夹,并应用适当的权限。

受保护的方法

static void validateDestinationDir(File destDir, String filename)

公共构造函数

ZipUtil

public ZipUtil ()

公共方法

addToZip

public static void addToZip (ZipOutputStream out, 
                File file, 
                List<String> relativePathSegs)

以递归方式将指定文件及其内容添加到 ZipOutputStream

参数
out ZipOutputStreamZipOutputStream

file File:要添加到数据流的 File

relativePathSegs List:文件的相对路径,包括分隔符

抛出
IOException 如果未能将文件添加到 zip

applyPermission

public static void applyPermission (File targetFile, 
                CentralDirectoryInfo zipEntry)

应用在中央目录条目中配置的文件权限。

参数
targetFile File:要设置权限的 File

zipEntry CentralDirectoryInfo:包含文件权限的 CentralDirectoryInfo 对象。

抛出
IOException 如果无法访问文件。

closeZip

public static void closeZip (ZipFile zipFile)

关闭已打开的 ZipFile,忽略所有例外情况。

参数
zipFile ZipFile:要关闭的文件

createZip

public static File createZip (File dir, 
                String name)

用于创建临时 ZIP 文件的实用方法,该文件包含指定目录及其所有内容。

参数
dir File:要压缩的目录

name String:所创建 ZIP 文件的基本名称(不含扩展名)。

返回
File 包含目录内容的临时 zip File

抛出
IOException 如果未能创建 zip 文件

createZip

public static File createZip (File dir)

用于创建临时 ZIP 文件的实用方法,该文件包含指定目录及其所有内容。

参数
dir File:要压缩的目录

返回
File 包含目录内容的临时 zip File

抛出
IOException 如果未能创建 zip 文件

createZip

public static File createZip (List<File> files)

用于创建包含指定文件的临时 ZIP 文件的实用方法

参数
files List:要压缩的文件的列表

返回
File 包含目录内容的临时 zip File

抛出
IOException 如果未能创建 zip 文件

createZip

public static File createZip (List<File> files, 
                String name)

用于创建包含指定文件的临时 ZIP 文件的实用方法。

参数
files List:要压缩的文件的列表

name String:所创建 ZIP 文件的基本名称(不含扩展名)。

返回
File 包含目录内容的临时 zip File

抛出
IOException 如果未能创建 zip 文件

createZip

public static void createZip (List<File> files, 
                File zipFile)

用于创建包含指定文件的 ZIP 文件的实用方法

参数
files List:要压缩的文件的列表

zipFile File:要创建的 zip 文件 - 它不应已存在

抛出
IOException 如果未能创建 zip 文件

createZip

public static void createZip (File dir, 
                File zipFile)

用于创建包含指定目录及其所有内容的 ZIP 文件的实用方法。

参数
dir File:要压缩的目录

zipFile File:要创建的 zip 文件 - 它不应已存在

抛出
IOException 如果未能创建 zip 文件

extractFileFromZip

public static File extractFileFromZip (ZipFile zipFile, 
                String filePath)

用于将一个特定文件从 zip 文件提取到临时文件的实用方法

参数
zipFile ZipFile:要提取的 ZipFile

filePath String:要提取的文件的文件路径

返回
File File;如果未找到,则返回 null

抛出
IOException 如果提取文件失败

extractZip

public static void extractZip (ZipFile zipFile, 
                File destDir)

用于将 ZIP 文件的全部内容提取到指定目录中的实用方法

参数
zipFile ZipFile:要提取的 ZipFile

destDir File:要将文件提取到的本地目录

抛出
IOException 如果提取文件失败

extractZip

public static void extractZip (ZipFile zipFile, 
                File destDir, 
                Predicate<ZipEntry> shouldExtract)

用于将 ZIP 文件的内容提取到指定目录中的实用方法

参数
zipFile ZipFile:要提取的 ZipFile

destDir File:要将文件提取到的本地目录

shouldExtract Predicate:用于确定是否应提取 ZipEntry 的谓词

抛出
IOException 如果提取文件失败

extractZipToTemp

public static File extractZipToTemp (File zipFile, 
                String nameHint)

将 ZIP 文件解压缩到以字符串为前缀的临时目录

参数
zipFile File:要提取的 ZIP 文件

nameHint String:临时目录的前缀

返回
File 指向临时目录的 File

抛出
IOException
ZipException

getZipCentralDirectoryInfos

public static List<CentralDirectoryInfo> getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                long offset, 
                boolean useZip64)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

参数
partialZipFile File:包含中央目录条目的部分 zip 文件的 File 对象。

endCentralDirInfo EndCentralDirectoryInfo:相应 ZIP 文件的 EndCentralDirectoryInfo 对象。

offset long:部分 zip 文件中中央目录条目内容开始处的偏移量。

useZip64 boolean:一个布尔值,用于支持部分下载中的 zip64 格式。

返回
List<CentralDirectoryInfo> zip 文件的 CentralDirectoryInfo 列表

抛出
java.io.IOException
IOException

getZipCentralDirectoryInfos

public static List<CentralDirectoryInfo> getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

参数
partialZipFile File:包含中央目录条目的部分 zip 文件的 File 对象。

endCentralDirInfo EndCentralDirectoryInfo:相应 ZIP 文件的 EndCentralDirectoryInfo 对象。

返回
List<CentralDirectoryInfo> zip 文件的 CentralDirectoryInfo 列表

抛出
java.io.IOException
IOException

getZipCentralDirectoryInfos

public static List<CentralDirectoryInfo> getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                boolean useZip64)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

参数
partialZipFile File:包含中央目录条目的部分 zip 文件的 File 对象。

endCentralDirInfo EndCentralDirectoryInfo:相应 ZIP 文件的 EndCentralDirectoryInfo 对象。

useZip64 boolean:一个布尔值,用于支持部分下载中的 zip64 格式。

返回
List<CentralDirectoryInfo> zip 文件的 CentralDirectoryInfo 列表

抛出
java.io.IOException
IOException

getZipCentralDirectoryInfos

public static List<CentralDirectoryInfo> getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                long offset)

获取 zip 文件中文件的 {link CentralDirectoryInfo} 列表。

参数
partialZipFile File:包含中央目录条目的部分 zip 文件的 File 对象。

endCentralDirInfo EndCentralDirectoryInfo:相应 ZIP 文件的 EndCentralDirectoryInfo 对象。

offset long:部分 zip 文件中中央目录条目内容开始处的偏移量。

返回
List<CentralDirectoryInfo> zip 文件的 CentralDirectoryInfo 列表

抛出
java.io.IOException
IOException

gzipFile

public static void gzipFile (File file, 
                File gzipFile)

用于创建单个文件的 gzip 压缩版本的辅助方法。

参数
file File:原始文件

gzipFile File:用于放置压缩内容的文件

抛出
java.io.IOException
IOException

isZipFileValid

public static boolean isZipFileValid (File zipFile, 
                boolean thorough)

用于验证 ZIP 文件是否损坏的实用方法。

参数
zipFile File:要检查的 File

thorough boolean:是否尝试完全提取归档文件。如果值为 false,此方法将无法检测格式正确的归档中的 CRC 错误。

返回
boolean 如果文件似乎已损坏,则为 false;否则为 true

抛出
IOException 如果无法打开或读取文件

unzipPartialZipFile

public static void unzipPartialZipFile (File partialZip, 
                File targetFile, 
                CentralDirectoryInfo zipEntry, 
                LocalFileHeader localFileHeader, 
                long startOffset)

从部分 ZIP 文件中提取单个请求的文件。

此方法假设压缩时所有文件都在同一磁盘上。

如果 ERROR(/targetFile) 是一个目录,则会创建一个不包含其内容的空目录。

如果 ERROR(/targetFile) 是符号链接,则系统会创建符号链接,但不会解析该链接。

它目前不支持以下功能:

ZIP 文件大于 4GB

ZIP64(需要更新压缩大小的 ZipLocalFileHeader)

加密的 zip 文件

参数
partialZip File:ZIP 文件的部分内容。File

targetFile File:用于保存提取文件的 File

zipEntry CentralDirectoryInfo:要从部分 ZIP 文件中提取的文件的 CentralDirectoryInfo 对象。

localFileHeader LocalFileHeader:要从部分 ZIP 文件中提取的文件的 LocalFileHeader 对象。

startOffset long:要提取的文件的起始偏移量。

抛出
java.io.IOException
IOException

unzipPartialZipFolder

public static void unzipPartialZipFolder (File targetFile, 
                CentralDirectoryInfo zipEntry)

从部分 ZIP 文件中提取所请求的文件夹,并应用适当的权限。

参数
targetFile File:用于保存提取文件的 File

zipEntry CentralDirectoryInfo:要从部分 ZIP 文件中提取的文件的 CentralDirectoryInfo 对象。

抛出
java.io.IOException
IOException

受保护的方法

validateDestinationDir

protected static void validateDestinationDir (File destDir, 
                String filename)

参数
destDir File

filename String

抛出
IOException