本篇文章主要讲解有关压缩文件的处理:在开发中我们不免会遇到上传多个文件到服务器,这个时候我们就要用到压缩文件,将压缩到的文件上传到服务器,就非常的方便,下面是压缩文件的工具类,以供参考:
public class ZipUtils { private static boolean isSuccess = false; public static boolean isSuccess() { return isSuccess; } /** * 压缩文件和文件夹 * * @param srcFileString 要压缩的文件或文件夹 * @param zipFileString 压缩完成的Zip路径 * @throws Exception */ public static void ZipFolder(String srcFileString, String zipFileString,String zipName) { //创建ZIP ZipOutputStream outZip = null; try { //创建文件 File file = new File(srcFileString); File outPath = new File(zipFileString); if (!outPath.exists()){ outPath.mkdirs(); } outZip = new ZipOutputStream(new FileOutputStream(new File(outPath, zipName))); //压缩 ZipFiles(file.getParent() + File.separator, file.getName(), outZip); isSuccess = true; } catch (Exception e) { isSuccess = false; e.printStackTrace(); } finally { //完成和关闭 if (outZip != null) { try { outZip.finish(); outZip.close(); }catch (IOException e) { e.printStackTrace(); } } } } /** * 压缩文件 * * @param folderString * @param fileString * @param zipOutputSteam * @throws Exception */ private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam) throws Exception { if (zipOutputSteam == null) return; FileInputStream inputStream = null; try { File file = new File(folderString + fileString); if (file.isFile()) { ZipEntry zipEntry = new ZipEntry(fileString); 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); } } } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException ex) { ex.printStackTrace(); } } } } }