• 文件压缩


    package com.jcsoft.transaction.common.action;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    /**
     * 压缩文件
     */
    public class DownPackAction {
         public static File doZip(String sourceDir, String zipFilePath) 
                 throws IOException {
                  
                  File file = new File(sourceDir);
                  File zipFile = new File(zipFilePath);
                  ZipOutputStream zos = null;
                  try {
                   // 创建写出流操作
                   OutputStream os = new FileOutputStream(zipFile);
                   BufferedOutputStream bos = new BufferedOutputStream(os);
                   zos = new ZipOutputStream(bos);
                   
                   String basePath = null;
                   
                   // 获取目录
                   if(file.isDirectory()) {
                    basePath = file.getPath();
                   }else {
                    basePath = file.getParent();
                   }
                   
                   zipFile(file, basePath, zos);
                  }finally {
                   if(zos != null) {
                    zos.closeEntry();
                    zos.close();
                   }
                  }
                  
                  return zipFile;
                 }
    
                 /** 
                  * @param source 源文件
                  * @param basePath 
                  * @param zos 
                  */
                 private static void zipFile(File source, String basePath, ZipOutputStream zos) 
                 throws IOException {
                  File[] files = null;
                  if (source.isDirectory()) {
                   files = source.listFiles();
                  } else {
                   files = new File[1];
                   files[0] = source;
                  }
                  
                  InputStream is = null;
                  String pathName;
                  byte[] buf = new byte[1024];
                  int length = 0;
                  try{
                   for(File file : files) {
                    if(file.isDirectory()) {
                     pathName = file.getPath().substring(basePath.length() + 1) + "/";
                     zos.putNextEntry(new ZipEntry(pathName));
                     zipFile(file, basePath, zos);
                    }else {
                     pathName = file.getPath().substring(basePath.length() + 1);
                     is = new FileInputStream(file);
                     BufferedInputStream bis = new BufferedInputStream(is);
                     zos.putNextEntry(new ZipEntry(pathName));
                     while ((length = bis.read(buf)) > 0) {
                      zos.write(buf, 0, length);
                     }
                    }
                   }
                  }finally {
                   if(is != null) {
                    is.close();
                   }
                  }
                 }
                 public static void main(String[] args) {   
                     try {
                         //将D:\test1文件夹打包到D:\test2并命名为test1.zip
                        doZip("D:\test1","D:\test2\test1.zip"); 
                    } catch (IOException e) {
                        e.printStackTrace();
                    }   
                    }   
    }
  • 相关阅读:
    linux系统分区表修复
    centos 系统下彻底删除mysql
    mysql数据类型
    mysq 数据库基本管理
    centos 网卡聚合及Cisco交换机链路聚合
    Dell 服务器安装方法介绍
    linux分区之gpt(大于2T的分区)
    windows server 2008 远程桌面连接数修改--无限连接
    C# WinForm控件美化扩展系列之ListBox
    C# 文件 文件夹
  • 原文地址:https://www.cnblogs.com/angto64/p/6177957.html
Copyright © 2020-2023  润新知