ZipUtil

public class ZipUtil
extends Object

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


用於壓縮相關作業的輔助類別

摘要

公用建構函式

ZipUtil()

公用方法

static void addToZip(ZipOutputStream out, File file, relativePathSegs)

遞迴式地將指定檔案及其內容加入至 ZipOutputStream

static void applyPermission(File targetFile, CentralDirectoryInfo zipEntry)

套用中央目錄項目中設定的檔案權限。

static void closeZip(ZipFile zipFile)

關閉已開啟的 ERROR(/ZipFile),忽略任何例外狀況。

static File createZip(File dir)

公用方法,用於建立包含指定目錄及其所有內容的臨時 ZIP 檔案。

static File createZip( files, String name)

公用程式方法,用於建立包含指定檔案的臨時 ZIP 檔案。

static File createZip(File dir, String name)

公用方法,用於建立包含指定目錄及其所有內容的臨時 ZIP 檔案。

static File createZip( files)

建立包含指定檔案的臨時 ZIP 檔案的工具方法

static void createZip(File dir, File zipFile)

建立包含指定目錄及其所有內容的 ZIP 檔案的實用程式方法。

static void createZip( files, File zipFile)

公用程式方法,用於建立包含指定檔案的 ZIP 檔案

static File extractFileFromZip(ZipFile zipFile, String filePath)

實用方法,可從 ZIP 檔案中將特定檔案解壓縮至 tmp 檔案

static void extractZip(ZipFile zipFile, File destDir)

用於將 ZIP 檔案的完整內容解壓縮至指定目錄的工具方法

static void extractZip(ZipFile zipFile, File destDir, shouldExtract)

用於將 ZIP 檔案內容解壓縮至指定目錄的實用工具方法

static File extractZipToTemp(File zipFile, String nameHint)

將 ZIP 檔案解壓縮至字串前置的暫存目錄

static getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, boolean useZip64)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

static getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, long offset)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

static getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

static getZipCentralDirectoryInfos(File partialZipFile, EndCentralDirectoryInfo endCentralDirInfo, long offset, boolean useZip64)

取得 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, 
                 relativePathSegs)

遞迴式地將指定檔案及其內容加入 ZipOutputStream

參數
out ZipOutputStreamERROR(/ZipOutputStream)

file File:要加入串流的 ERROR(/File)

relativePathSegs :檔案的相對路徑,包括分隔符

擲回
如果無法將檔案新增至 ZIP 檔案

applyPermission

public static void applyPermission (File targetFile, 
                CentralDirectoryInfo zipEntry)

套用中央目錄項目中設定的檔案權限。

參數
targetFile File:要設定權限的 ERROR(/File)

zipEntry CentralDirectoryInfo:包含檔案權限的 CentralDirectoryInfo 物件。

擲回
無法存取檔案。

closeZip

public static void closeZip (ZipFile zipFile)

關閉已開啟的 ERROR(/ZipFile),忽略任何例外狀況。

參數
zipFile ZipFile:要關閉的檔案

createZip

public static File createZip (File dir)

實用方法,可建立包含指定目錄及其所有內容的臨時 ZIP 檔案。

參數
dir File:要壓縮的目錄

傳回
File 包含目錄內容的臨時 ZIP 檔案 ERROR(/File)

擲回
如果無法建立 ZIP 檔案

createZip

public static File createZip ( files, 
                String name)

公用程式方法,用於建立包含指定檔案的臨時 ZIP 檔案。

參數
files :要壓縮的檔案清單

name String:不含副檔名的 ZIP 檔案名稱。

傳回
File 包含目錄內容的臨時 ZIP 檔案 ERROR(/File)

擲回
如果無法建立 ZIP 檔案

createZip

public static File createZip (File dir, 
                String name)

實用方法,可建立包含指定目錄及其所有內容的臨時 ZIP 檔案。

參數
dir File:要壓縮的目錄

name String:不含副檔名的 ZIP 檔案名稱。

傳回
File 包含目錄內容的臨時 ZIP 檔案 ERROR(/File)

擲回
如果無法建立 ZIP 檔案

createZip

public static File createZip ( files)

建立包含指定檔案的臨時 ZIP 檔案的工具方法

參數
files :要壓縮的檔案清單

傳回
File 包含目錄內容的臨時 ZIP 檔案 ERROR(/File)

擲回
如果無法建立 ZIP 檔案

createZip

public static void createZip (File dir, 
                File zipFile)

建立包含指定目錄及其所有內容的 ZIP 檔案的實用程式方法。

參數
dir File:要壓縮的目錄

zipFile File:要建立的 ZIP 檔案,該檔案不應已存在

擲回
如果無法建立 ZIP 檔案

createZip

public static void createZip ( files, 
                File zipFile)

建立內含指定檔案的 ZIP 檔案的工具方法

參數
files :要壓縮的檔案清單

zipFile File:要建立的 ZIP 檔案,該檔案不應已存在

擲回
如果無法建立 ZIP 檔案

extractFileFromZip

public static File extractFileFromZip (ZipFile zipFile, 
                String filePath)

實用方法,可從 ZIP 檔案中將一個特定檔案解壓縮至 tmp 檔案

參數
zipFile ZipFile:要擷取的 ERROR(/ZipFile)

filePath String:要解壓縮的檔案路徑

傳回
File ERROR(/File),如果找不到則傳回空值

擲回
無法解壓縮檔案

extractZip

public static void extractZip (ZipFile zipFile, 
                File destDir)

用於將 ZIP 檔案的完整內容解壓縮至指定目錄的工具方法

參數
zipFile ZipFile:要擷取的 ERROR(/ZipFile)

destDir File:要將檔案解壓縮至的本機目錄

擲回
無法解壓縮檔案

extractZip

public static void extractZip (ZipFile zipFile, 
                File destDir, 
                 shouldExtract)

用於將 ZIP 檔案內容解壓縮至指定目錄的工具方法

參數
zipFile ZipFile:要擷取的 ERROR(/ZipFile)

destDir File:要將檔案解壓縮至的本機目錄

shouldExtract :用於判斷是否應擷取 ZipEntry 的述詞

擲回
無法解壓縮檔案

extractZipToTemp

public static File extractZipToTemp (File zipFile, 
                String nameHint)

將 ZIP 檔案解壓縮至前置字串的暫存目錄

參數
zipFile File:要解壓縮的 ZIP 檔案

nameHint String:暫存目錄的字首

傳回
File ERROR(/File) 指向暫存目錄

getZipCentralDirectoryInfos

public static  getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                boolean useZip64)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

參數
partialZipFile File:包含中央目錄項目的部分 ZIP 檔案的 ERROR(/File) 物件。

endCentralDirInfo EndCentralDirectoryInfo:ZIP 檔案的 EndCentralDirectoryInfo 物件。

useZip64 boolean:布林值,用於在部分下載中支援 zip64 格式。

傳回
ZIP 檔案的 CentralDirectoryInfo 清單

擲回
IOException

getZipCentralDirectoryInfos

public static  getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                long offset)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

參數
partialZipFile File:包含中央目錄項目的部分 ZIP 檔案的 ERROR(/File) 物件。

endCentralDirInfo EndCentralDirectoryInfo:ZIP 檔案的 EndCentralDirectoryInfo 物件。

offset long:部分 ZIP 檔案中,中央目錄項目內容開始的位置。

傳回
ZIP 檔案的 CentralDirectoryInfo 清單

擲回
IOException

getZipCentralDirectoryInfos

public static  getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

參數
partialZipFile File:包含中央目錄項目的部分 ZIP 檔案的 ERROR(/File) 物件。

endCentralDirInfo EndCentralDirectoryInfo:ZIP 檔案的 EndCentralDirectoryInfo 物件。

傳回
ZIP 檔案的 CentralDirectoryInfo 清單

擲回
IOException

getZipCentralDirectoryInfos

public static  getZipCentralDirectoryInfos (File partialZipFile, 
                EndCentralDirectoryInfo endCentralDirInfo, 
                long offset, 
                boolean useZip64)

取得 ZIP 檔案中檔案的 {link CentralDirectoryInfo} 清單。

參數
partialZipFile File:包含中央目錄項目的部分 ZIP 檔案的 ERROR(/File) 物件。

endCentralDirInfo EndCentralDirectoryInfo:ZIP 檔案的 EndCentralDirectoryInfo 物件。

offset long:部分 ZIP 檔案中,中央目錄項目內容開始的位置。

useZip64 boolean:布林值,用於在部分下載中支援 zip64 格式。

傳回
ZIP 檔案的 CentralDirectoryInfo 清單

擲回
IOException

gzipFile

public static void gzipFile (File file, 
                File gzipFile)

建立單一檔案的 GZIP 版本的輔助方法。

參數
file File:原始檔案

gzipFile File:要放置壓縮內容的檔案

擲回
IOException

isZipFileValid

public static boolean isZipFileValid (File zipFile, 
                boolean thorough)

用於驗證 ZIP 檔案是否未損毀的工具方法。

參數
zipFile File:要檢查的 ERROR(/File)

thorough boolean:是否嘗試完全解壓縮封存檔。如果為 false,此方法將無法偵測格式正確的封存檔中的 CRC 錯誤。

傳回
boolean false (如果檔案似乎已損毀);true (否則)

擲回
是否無法開啟或讀取檔案

unzipPartialZipFile

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

從部分 ZIP 檔案中提取單一要求檔案。

這個方法假設所有檔案在壓縮時都位於相同磁碟上。

如果 ERROR(/targetFile) 是目錄,系統會建立空白目錄,但沒有內容。

如果 ERROR(/targetFile) 是符號連結,系統會建立符號連結,但不會解析。

但目前不支援下列功能:

ZIP 檔案大小超過 4 GB

ZIP64(需要在壓縮大小上更新 ZipLocalFileHeader)

已加密的 ZIP 檔案

參數
partialZip File:部分 ZIP 檔案的 ERROR(/File)

targetFile File:要儲存解壓縮檔案的 ERROR(/File)

zipEntry CentralDirectoryInfo:要從部分 ZIP 檔案中擷取的檔案 CentralDirectoryInfo 物件。

localFileHeader LocalFileHeader:要從部分 ZIP 檔案中擷取的檔案 LocalFileHeader 物件。

startOffset long:要擷取的檔案起始偏移量。

擲回
IOException

unzipPartialZipFolder

public static void unzipPartialZipFolder (File targetFile, 
                CentralDirectoryInfo zipEntry)

從部分 ZIP 檔案中擷取要求的資料夾,並套用適當權限。

參數
targetFile File:要儲存解壓縮檔案的 ERROR(/File)

zipEntry CentralDirectoryInfo:要從部分 ZIP 檔案中擷取的檔案 CentralDirectoryInfo 物件。

擲回
IOException

受保護的方法

validateDestinationDir

protected static void validateDestinationDir (File destDir, 
                String filename)

參數
destDir File

filename String