下面是压缩文件和文件夹的方法:
/*** 压缩文件和文件夹** @param srcFileString 要压缩的文件或文件夹* @param zipFileString 压缩完成的Zip路径* @throws Exception*/public static void ZipFolder(String srcFileString, String zipFileString) throws Exception {//创建ZIPZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));//创建文件File file = new File(srcFileString);//压缩LogUtils.LOGE("---->"+file.getParent()+"==="+file.getAbsolutePath());ZipFiles(file.getParent()+ File.separator, file.getName(), outZip);//完成和关闭outZip.finish();outZip.close();}/*** 压缩文件** @param folderString* @param fileString* @param zipOutputSteam* @throws Exception*/private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam) throws Exception {LogUtils.LOGE("folderString:" + folderString + "\n" +"fileString:" + fileString + "\n==========================");if (zipOutputSteam == null)return;File file = new File(folderString + fileString);if (file.isFile()) {ZipEntry zipEntry = new ZipEntry(fileString);FileInputStream inputStream = new FileInputStream(file);zipOutputSteam.putNextEntry(zipEntry);int len;byte[] buffer = new byte[4096];while ((len = inputStream.read(buffer)) != -1) {zipOutputSteam.write(buffer, 0, len);}zipOutputSteam.closeEntry();} else {//文件夹String fileList[] = file.list();//没有子文件和压缩if (fileList.length <= 0) {ZipEntry zipEntry = new ZipEntry(fileString + File.separator);zipOutputSteam.putNextEntry(zipEntry);zipOutputSteam.closeEntry();}//子文件和递归for (int i = 0; i < fileList.length; i++) {ZipFiles(folderString+fileString+"/", fileList[i], zipOutputSteam);}}}